diff --git a/AUTHORS b/AUTHORS index 119f6378eb..855717ea64 100644 --- a/AUTHORS +++ b/AUTHORS @@ -42,13 +42,17 @@ people who have submitted patches, reported bugs, added translations, helped answer newbie questions, and generally made Django that much better: adurdin@gmail.com + alang@bright-green.com + Marty Alchin Daniel Alves Barbosa de Oliveira Vaz Andreas andy@jadedplanet.net Fabrice Aneche ant9000@netwise.it David Ascher + david@kazserve.org Arthur + axiak@mit.edu Jiri Barton Ned Batchelder Shannon -jj Behrens @@ -66,6 +70,8 @@ answer newbie questions, and generally made Django that much better: Amit Chakradeo ChaosKCW ivan.chelubeev@gmail.com + Bryan Chow + Michal Chruszcz Ian Clelland crankycoder@gmail.com Matt Croydon @@ -78,22 +84,26 @@ answer newbie questions, and generally made Django that much better: Jason Davies (Esaj) Alex Dedul deric@monowerks.com + Max Derkachev dne@mayonnaise.net Maximillian Dornseif Jeremy Dunck Andy Dustman Clint Ecker + enlight Enrico Ludvig Ericson Dirk Eschler Marc Fargas favo@exoweb.net + Bill Fenner Matthew Flanagan Eric Floehr Jorge Gajon gandalf@owca.info Baishampayan Ghose martin.glueck@gmail.com + GomoX Simon Greenhill Owen Griffiths Espen Grindhaug @@ -105,11 +115,14 @@ answer newbie questions, and generally made Django that much better: hipertracker@gmail.com Ian Holsman Kieran Holland + Sung-Jin Hong Robert Rock Howard Jason Huggins + Hyun Mi Ae Tom Insam Baurzhan Ismagulov jcrasta@gmail.com + Zak Johnson Michael Josephson jpellerin@gmail.com junzhang.jn@gmail.com @@ -120,6 +133,8 @@ answer newbie questions, and generally made Django that much better: Sune Kirkeby Bastian Kleineidam Cameron Knight (ckknight) + Gasper Koren + Martin Kosír Meir Kriheli Bruce Kroeze Joseph Kocherhans @@ -134,12 +149,13 @@ answer newbie questions, and generally made Django that much better: lerouxb@gmail.com Waylan Limberg limodou - mattmcc + Matt McClanahan Martin Maney masonsimon+django@gmail.com Manuzhai Petar Marić Nuno Mariz + marijn@metronomo.cl mark@junklight.com Yasushi Masuda mattycakes@gmail.com @@ -153,6 +169,7 @@ answer newbie questions, and generally made Django that much better: Robin Munn Robert Myers Nebojša Dorđević + Gopal Narayanan Fraser Nevett Sam Newman Neal Norwitz @@ -168,14 +185,19 @@ answer newbie questions, and generally made Django that much better: Luke Plant plisk Daniel Poelzleithner + polpak@yahoo.com J. Rademaker Michael Radziej ramiro + Massimiliano Ravelli Brian Ray remco@diji.biz rhettg@gmail.com + Henrique Romano + Armin Ronacher Oliver Rutherfurd Ivan Sagalaev (Maniac) + Vinay Sajip David Schein scott@staplefish.com serbaut@gmail.com @@ -199,6 +221,7 @@ answer newbie questions, and generally made Django that much better: torne-django@wolfpuppy.org.uk Karen Tracey Makoto Tsuyuki + tt@gurgle.no Amit Upadhyay Geert Vanderkelen viestards.lists@gmail.com @@ -206,6 +229,7 @@ answer newbie questions, and generally made Django that much better: wam-djangobug@wamber.net Dan Watson Chris Wesseling + charly.wilhelm@gmail.com Rachel Willmer Gary Wilson wojtek diff --git a/MANIFEST.in b/MANIFEST.in index a47b6e30f1..06a6021a95 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -11,4 +11,5 @@ recursive-include django/conf/locale * recursive-include django/contrib/admin/templates * recursive-include django/contrib/admin/media * recursive-include django/contrib/comments/templates * +recursive-include django/contrib/databrowse/templates * recursive-include django/contrib/sitemaps/templates * diff --git a/django/bin/make-messages.py b/django/bin/make-messages.py index 34fb68dcfe..bf9e7a1962 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 --from-code UTF-8 -o - "%s"' % ( + cmd = 'xgettext %s -d %s -L Perl --keyword=gettext_noop --keyword=gettext_lazy --keyword=ngettext_lazy:1,2 --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 --from-code UTF-8 -o - "%s"' % ( + cmd = 'xgettext %s -d %s -L Python --keyword=gettext_noop --keyword=gettext_lazy --keyword=ngettext_lazy:1,2 --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/bin/profiling/gather_profile_stats.py b/django/bin/profiling/gather_profile_stats.py index 852f16229d..c0844930e9 100644 --- a/django/bin/profiling/gather_profile_stats.py +++ b/django/bin/profiling/gather_profile_stats.py @@ -22,7 +22,7 @@ def gather_stats(p): else: continue print "Processing %s" % f - if profiles.has_key(path): + if path in profiles: profiles[path].add(prof) else: profiles[path] = prof diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py index f26911d7f9..61751db8cd 100644 --- a/django/conf/global_settings.py +++ b/django/conf/global_settings.py @@ -55,6 +55,7 @@ LANGUAGES = ( ('is', gettext_noop('Icelandic')), ('it', gettext_noop('Italian')), ('ja', gettext_noop('Japanese')), + ('ko', gettext_noop('Korean')), ('kn', gettext_noop('Kannada')), ('lv', gettext_noop('Latvian')), ('mk', gettext_noop('Macedonian')), @@ -118,6 +119,7 @@ EMAIL_PORT = 25 # Optional SMTP authentication information for EMAIL_HOST. EMAIL_HOST_USER = '' EMAIL_HOST_PASSWORD = '' +EMAIL_USE_TLS = False # List of strings representing installed apps. INSTALLED_APPS = () @@ -311,6 +313,12 @@ BANNED_IPS = () AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',) +LOGIN_URL = '/accounts/login/' + +LOGOUT_URL = '/accounts/logout/' + +LOGIN_REDIRECT_URL = '/accounts/profile/' + ########### # TESTING # ########### diff --git a/django/conf/locale/de/LC_MESSAGES/django.mo b/django/conf/locale/de/LC_MESSAGES/django.mo index b5c518c13c..5f2eee4f33 100644 Binary files a/django/conf/locale/de/LC_MESSAGES/django.mo and b/django/conf/locale/de/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/de/LC_MESSAGES/django.po b/django/conf/locale/de/LC_MESSAGES/django.po index 2f0991c8cc..52b70bda00 100644 --- a/django/conf/locale/de/LC_MESSAGES/django.po +++ b/django/conf/locale/de/LC_MESSAGES/django.po @@ -6,152 +6,180 @@ msgid "" msgstr "" "Project-Id-Version: Django 1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-02-05 02:56+0100\n" +"POT-Creation-Date: 2007-04-09 22:42+0200\n" "PO-Revision-Date: 2007-02-05 03:19+0100\n" -"Last-Translator: Dirk Eschler \n" +"Last-Translator: Jannis Leidel \n" +"Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language-Team: \n" "X-Poedit-Language: German\n" "X-Poedit-Country: GERMANY\n" "X-Poedit-SourceCharset: utf-8\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "X-Generator: KBabel 1.11.4\n" -#: .\conf\global_settings.py:39 +#: conf/global_settings.py:39 msgid "Arabic" msgstr "Arabisch" -#: .\conf\global_settings.py:40 +#: conf/global_settings.py:40 msgid "Bengali" msgstr "Bengali" -#: .\conf\global_settings.py:41 +#: conf/global_settings.py:41 +msgid "Catalan" +msgstr "Katalanisch" + +#: conf/global_settings.py:42 msgid "Czech" msgstr "Tschechisch" -#: .\conf\global_settings.py:42 +#: conf/global_settings.py:43 msgid "Welsh" msgstr "Walisisch" -#: .\conf\global_settings.py:43 +#: conf/global_settings.py:44 msgid "Danish" msgstr "Dänisch" -#: .\conf\global_settings.py:44 +#: conf/global_settings.py:45 msgid "German" msgstr "Deutsch" -#: .\conf\global_settings.py:45 +#: conf/global_settings.py:46 msgid "Greek" msgstr "Griechisch" -#: .\conf\global_settings.py:46 +#: conf/global_settings.py:47 msgid "English" msgstr "Englisch" -#: .\conf\global_settings.py:47 +#: conf/global_settings.py:48 msgid "Spanish" msgstr "Spanisch" -#: .\conf\global_settings.py:48 +#: conf/global_settings.py:49 msgid "Argentinean Spanish" msgstr "Argentinisches Spanisch" -#: .\conf\global_settings.py:49 +#: conf/global_settings.py:50 msgid "Finnish" msgstr "Finnisch" -#: .\conf\global_settings.py:50 +#: conf/global_settings.py:51 msgid "French" msgstr "Französisch" -#: .\conf\global_settings.py:51 +#: conf/global_settings.py:52 msgid "Galician" msgstr "Galicisch" -#: .\conf\global_settings.py:52 +#: conf/global_settings.py:53 msgid "Hungarian" msgstr "Ungarisch" -#: .\conf\global_settings.py:53 +#: conf/global_settings.py:54 msgid "Hebrew" msgstr "Hebräisch" -#: .\conf\global_settings.py:54 +#: conf/global_settings.py:55 msgid "Icelandic" msgstr "Isländisch" -#: .\conf\global_settings.py:55 +#: conf/global_settings.py:56 msgid "Italian" msgstr "Italienisch" -#: .\conf\global_settings.py:56 +#: conf/global_settings.py:57 msgid "Japanese" msgstr "Japanisch" -#: .\conf\global_settings.py:57 +#: conf/global_settings.py:58 +msgid "Korean" +msgstr "Koreanisch" + +#: conf/global_settings.py:59 +msgid "Kannada" +msgstr "Kannada" + +#: conf/global_settings.py:60 +msgid "Latvian" +msgstr "Lettisch" + +#: conf/global_settings.py:61 +msgid "Macedonian" +msgstr "Mazedonisch" + +#: conf/global_settings.py:62 msgid "Dutch" msgstr "Holländisch" -#: .\conf\global_settings.py:58 +#: conf/global_settings.py:63 msgid "Norwegian" msgstr "Norwegisch" -#: .\conf\global_settings.py:59 +#: conf/global_settings.py:64 msgid "Polish" msgstr "Polnisch" -#: .\conf\global_settings.py:60 -msgid "Brazilian" -msgstr "Brasilianisch" +#: conf/global_settings.py:65 +msgid "Portugese" +msgstr "Portugiesisch" -#: .\conf\global_settings.py:61 +#: conf/global_settings.py:66 +msgid "Brazilian" +msgstr "Brasilianisches Portugiesisch" + +#: conf/global_settings.py:67 msgid "Romanian" msgstr "Rumänisch" -#: .\conf\global_settings.py:62 +#: conf/global_settings.py:68 msgid "Russian" msgstr "Russisch" -#: .\conf\global_settings.py:63 +#: conf/global_settings.py:69 msgid "Slovak" msgstr "Slowakisch" -#: .\conf\global_settings.py:64 +#: conf/global_settings.py:70 msgid "Slovenian" msgstr "Slowenisch" -#: .\conf\global_settings.py:65 +#: conf/global_settings.py:71 msgid "Serbian" msgstr "Serbisch" -#: .\conf\global_settings.py:66 +#: conf/global_settings.py:72 msgid "Swedish" msgstr "Schwedisch" -#: .\conf\global_settings.py:67 +#: conf/global_settings.py:73 msgid "Tamil" msgstr "Tamilisch" -#: .\conf\global_settings.py:68 +#: conf/global_settings.py:74 +msgid "Telugu" +msgstr "Telugisch" + +#: conf/global_settings.py:75 msgid "Turkish" msgstr "Türkisch" -#: .\conf\global_settings.py:69 +#: conf/global_settings.py:76 msgid "Ukrainian" msgstr "Ukrainisch" -#: .\conf\global_settings.py:70 +#: conf/global_settings.py:77 msgid "Simplified Chinese" msgstr "Vereinfachtes Chinesisch" -#: .\conf\global_settings.py:71 +#: conf/global_settings.py:78 msgid "Traditional Chinese" msgstr "Traditionelles Chinesisch" -#: .\contrib\admin\filterspecs.py:40 +#: contrib/admin/filterspecs.py:40 #, python-format msgid "" "

By %s:

\n" @@ -160,395 +188,422 @@ msgstr "" "

Nach %s:

\n" "
    \n" -#: .\contrib\admin\filterspecs.py:70 -#: .\contrib\admin\filterspecs.py:88 -#: .\contrib\admin\filterspecs.py:143 -#: .\contrib\admin\filterspecs.py:169 +#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88 +#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169 msgid "All" msgstr "Alle" -#: .\contrib\admin\filterspecs.py:109 +#: contrib/admin/filterspecs.py:109 msgid "Any date" msgstr "Alle Daten" -#: .\contrib\admin\filterspecs.py:110 +#: contrib/admin/filterspecs.py:110 msgid "Today" msgstr "Heute" -#: .\contrib\admin\filterspecs.py:113 +#: contrib/admin/filterspecs.py:113 msgid "Past 7 days" msgstr "Letzte 7 Tage" -#: .\contrib\admin\filterspecs.py:115 +#: contrib/admin/filterspecs.py:115 msgid "This month" msgstr "Diesen Monat" -#: .\contrib\admin\filterspecs.py:117 +#: contrib/admin/filterspecs.py:117 msgid "This year" msgstr "Dieses Jahr" -#: .\contrib\admin\filterspecs.py:143 -#: .\newforms\widgets.py:162 -#: .\oldforms\__init__.py:572 +#: contrib/admin/filterspecs.py:143 newforms/widgets.py:180 +#: oldforms/__init__.py:577 msgid "Yes" msgstr "Ja" -#: .\contrib\admin\filterspecs.py:143 -#: .\newforms\widgets.py:162 -#: .\oldforms\__init__.py:572 +#: contrib/admin/filterspecs.py:143 newforms/widgets.py:180 +#: oldforms/__init__.py:577 msgid "No" msgstr "Nein" -#: .\contrib\admin\filterspecs.py:150 -#: .\newforms\widgets.py:162 -#: .\oldforms\__init__.py:572 +#: contrib/admin/filterspecs.py:150 newforms/widgets.py:180 +#: oldforms/__init__.py:577 msgid "Unknown" msgstr "Unbekannt" -#: .\contrib\admin\models.py:16 +#: contrib/admin/models.py:16 msgid "action time" msgstr "Zeitpunkt der Aktion" -#: .\contrib\admin\models.py:19 +#: contrib/admin/models.py:19 msgid "object id" msgstr "Objekt-ID" -#: .\contrib\admin\models.py:20 +#: contrib/admin/models.py:20 msgid "object repr" msgstr "Objekt Darst." -#: .\contrib\admin\models.py:21 +#: contrib/admin/models.py:21 msgid "action flag" msgstr "Aktionskennzeichen" -#: .\contrib\admin\models.py:22 +#: contrib/admin/models.py:22 msgid "change message" msgstr "Änderungsmeldung" -#: .\contrib\admin\models.py:25 +#: contrib/admin/models.py:25 msgid "log entry" msgstr "Logeintrag" -#: .\contrib\admin\models.py:26 +#: contrib/admin/models.py:26 msgid "log entries" msgstr "Logeinträge" -#: .\contrib\admin\templates\admin\404.html.py:4 -#: .\contrib\admin\templates\admin\404.html.py:8 +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 msgid "Page not found" msgstr "Seite nicht gefunden" -#: .\contrib\admin\templates\admin\404.html.py:10 +#: contrib/admin/templates/admin/404.html:10 msgid "We're sorry, but the requested page could not be found." -msgstr "Es tut uns leid, aber die angeforderte Seite konnte nicht gefunden werden." +msgstr "" +"Es tut uns leid, aber die angeforderte Seite konnte nicht gefunden werden." -#: .\contrib\admin\templates\admin\500.html.py:4 -#: .\contrib\admin\templates\admin\base.html.py:30 -#: .\contrib\admin\templates\admin\change_form.html.py:13 -#: .\contrib\admin\templates\admin\change_list.html.py:6 -#: .\contrib\admin\templates\admin\delete_confirmation.html.py:6 -#: .\contrib\admin\templates\admin\invalid_setup.html.py:4 -#: .\contrib\admin\templates\admin\object_history.html.py:5 -#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:12 -#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:3 -#: .\contrib\admin\templates\registration\logged_out.html.py:4 -#: .\contrib\admin\templates\registration\password_change_done.html.py:4 -#: .\contrib\admin\templates\registration\password_change_form.html.py:4 -#: .\contrib\admin\templates\registration\password_reset_done.html.py:4 -#: .\contrib\admin\templates\registration\password_reset_form.html.py:4 +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/base.html:30 +#: contrib/admin/templates/admin/change_form.html:13 +#: contrib/admin/templates/admin/change_list.html:6 +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/auth/user/change_password.html:12 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +#: contrib/admin/templates/registration/logged_out.html:4 +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 msgid "Home" msgstr "Start" -#: .\contrib\admin\templates\admin\500.html.py:4 +#: contrib/admin/templates/admin/500.html:4 msgid "Server error" msgstr "Serverfehler" -#: .\contrib\admin\templates\admin\500.html.py:6 +#: contrib/admin/templates/admin/500.html:6 msgid "Server error (500)" msgstr "Serverfehler (500)" -#: .\contrib\admin\templates\admin\500.html.py:9 +#: contrib/admin/templates/admin/500.html:9 msgid "Server Error (500)" msgstr "Serverfehler (500)" -#: .\contrib\admin\templates\admin\500.html.py: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 "Ein Fehler ist aufgetreten. Dieser Fehler wurde an die Serververwalter per E-Mail weitergegeben und sollte bald behoben sein. Vielen Dank für Ihr Verständnis." +#: 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 "" +"Ein Fehler ist aufgetreten. Dieser Fehler wurde an die Serververwalter per E-" +"Mail weitergegeben und sollte bald behoben sein. Vielen Dank für Ihr " +"Verständnis." -#: .\contrib\admin\templates\admin\base.html.py:25 +#: contrib/admin/templates/admin/base.html:25 msgid "Welcome," msgstr "Willkommen," -#: .\contrib\admin\templates\admin\base.html.py:25 -#: .\contrib\admin\templates\admin\change_form.html.py:10 -#: .\contrib\admin\templates\admin\change_list.html.py:5 -#: .\contrib\admin\templates\admin\delete_confirmation.html.py:3 -#: .\contrib\admin\templates\admin\object_history.html.py:3 -#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:9 -#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:3 -#: .\contrib\admin\templates\registration\password_change_done.html.py:3 -#: .\contrib\admin\templates\registration\password_change_form.html.py:3 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 msgid "Documentation" msgstr "Dokumentation" -#: .\contrib\admin\templates\admin\base.html.py:25 -#: .\contrib\admin\templates\admin\change_form.html.py:10 -#: .\contrib\admin\templates\admin\change_list.html.py:5 -#: .\contrib\admin\templates\admin\delete_confirmation.html.py:3 -#: .\contrib\admin\templates\admin\object_history.html.py:3 -#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:9 -#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:15 -#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:46 -#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:4 -#: .\contrib\admin\templates\admin_doc\index.html.py:4 -#: .\contrib\admin\templates\admin_doc\missing_docutils.html.py:4 -#: .\contrib\admin\templates\admin_doc\model_detail.html.py:3 -#: .\contrib\admin\templates\admin_doc\model_index.html.py:5 -#: .\contrib\admin\templates\admin_doc\template_detail.html.py:4 -#: .\contrib\admin\templates\admin_doc\template_filter_index.html.py:5 -#: .\contrib\admin\templates\admin_doc\template_tag_index.html.py:5 -#: .\contrib\admin\templates\admin_doc\view_detail.html.py:4 -#: .\contrib\admin\templates\admin_doc\view_index.html.py:5 -#: .\contrib\admin\templates\registration\password_change_done.html.py:3 -#: .\contrib\admin\templates\registration\password_change_form.html.py:3 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/object_history.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/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/model_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/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 msgid "Change password" msgstr "Passwort ändern" -#: .\contrib\admin\templates\admin\base.html.py:25 -#: .\contrib\admin\templates\admin\change_form.html.py:10 -#: .\contrib\admin\templates\admin\change_list.html.py:5 -#: .\contrib\admin\templates\admin\delete_confirmation.html.py:3 -#: .\contrib\admin\templates\admin\object_history.html.py:3 -#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:9 -#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:4 -#: .\contrib\admin\templates\admin_doc\index.html.py:4 -#: .\contrib\admin\templates\admin_doc\missing_docutils.html.py:4 -#: .\contrib\admin\templates\admin_doc\model_detail.html.py:3 -#: .\contrib\admin\templates\admin_doc\model_index.html.py:5 -#: .\contrib\admin\templates\admin_doc\template_detail.html.py:4 -#: .\contrib\admin\templates\admin_doc\template_filter_index.html.py:5 -#: .\contrib\admin\templates\admin_doc\template_tag_index.html.py:5 -#: .\contrib\admin\templates\admin_doc\view_detail.html.py:4 -#: .\contrib\admin\templates\admin_doc\view_index.html.py:5 -#: .\contrib\admin\templates\registration\password_change_done.html.py:3 -#: .\contrib\admin\templates\registration\password_change_form.html.py:3 -#: .\contrib\comments\templates\comments\form.html.py:6 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/model_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/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/comments/templates/comments/form.html:6 msgid "Log out" msgstr "Abmelden" -#: .\contrib\admin\templates\admin\base_site.html.py:4 +#: contrib/admin/templates/admin/base_site.html:4 msgid "Django site admin" -msgstr "Django Systemverwaltung" +msgstr "Django-Systemverwaltung" -#: .\contrib\admin\templates\admin\base_site.html.py:7 +#: contrib/admin/templates/admin/base_site.html:7 msgid "Django administration" -msgstr "Django Verwaltung" +msgstr "Django-Verwaltung" -#: .\contrib\admin\templates\admin\change_form.html.py:15 -#: .\contrib\admin\templates\admin\index.html.py:28 +#: contrib/admin/templates/admin/change_form.html:15 +#: contrib/admin/templates/admin/index.html:28 msgid "Add" msgstr "Hinzufügen" -#: .\contrib\admin\templates\admin\change_form.html.py:21 -#: .\contrib\admin\templates\admin\object_history.html.py:5 +#: contrib/admin/templates/admin/change_form.html:21 +#: contrib/admin/templates/admin/object_history.html:5 msgid "History" msgstr "Geschichte" -#: .\contrib\admin\templates\admin\change_form.html.py:22 +#: contrib/admin/templates/admin/change_form.html:22 msgid "View on site" -msgstr "Im Web Anzeigen" +msgstr "Im Web anzeigen" -#: .\contrib\admin\templates\admin\change_form.html.py:32 -#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:24 +#: 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] "Bitte den aufgeführten Fehler korrigieren." msgstr[1] "Bitte die aufgeführten Fehler korrigieren." -#: .\contrib\admin\templates\admin\change_form.html.py:50 +#: contrib/admin/templates/admin/change_form.html:50 msgid "Ordering" msgstr "Sortierung" -#: .\contrib\admin\templates\admin\change_form.html.py:53 +#: contrib/admin/templates/admin/change_form.html:53 msgid "Order:" msgstr "Reihenfolge:" -#: .\contrib\admin\templates\admin\change_list.html.py:12 +#: contrib/admin/templates/admin/change_list.html:12 #, python-format msgid "Add %(name)s" msgstr "%(name)s hinzufügen" -#: .\contrib\admin\templates\admin\delete_confirmation.html.py:9 -#: .\contrib\admin\templates\admin\submit_line.html.py:3 +#: contrib/admin/templates/admin/delete_confirmation.html:9 +#: contrib/admin/templates/admin/submit_line.html:3 msgid "Delete" msgstr "Löschen" -#: .\contrib\admin\templates\admin\delete_confirmation.html.py:14 +#: 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 "Die Löschung des %(object_name)s '%(escaped_object)s' hätte die Löschung von abhängigen Daten zur Folge, aber Sie haben nicht die nötigen Rechte um die folgenden abhängigen Daten zu löschen:" +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 "" +"Die Löschung des %(object_name)s '%(escaped_object)s' hätte die Löschung von " +"abhängigen Daten zur Folge, aber Sie haben nicht die nötigen Rechte um die " +"folgenden abhängigen Daten zu löschen:" -#: .\contrib\admin\templates\admin\delete_confirmation.html.py:21 +#: 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 "Sind Sie sicher, dass Sie %(object_name)s \"%(escaped_object)s\" löschen wollen? Es werden zusätzlich die folgenden abhängigen Daten mit gelöscht:" +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 "" +"Sind Sie sicher, dass Sie %(object_name)s \"%(escaped_object)s\" löschen " +"wollen? Es werden zusätzlich die folgenden abhängigen Daten mit gelöscht:" -#: .\contrib\admin\templates\admin\delete_confirmation.html.py:26 +#: contrib/admin/templates/admin/delete_confirmation.html:26 msgid "Yes, I'm sure" msgstr "Ja, ich bin sicher" -#: .\contrib\admin\templates\admin\filter.html.py:2 +#: contrib/admin/templates/admin/filter.html:2 #, python-format msgid " By %(filter_title)s " msgstr " Nach %(filter_title)s " -#: .\contrib\admin\templates\admin\filters.html.py:4 +#: contrib/admin/templates/admin/filters.html:4 msgid "Filter" msgstr "Filter" -#: .\contrib\admin\templates\admin\index.html.py:17 +#: contrib/admin/templates/admin/index.html:17 #, python-format msgid "Models available in the %(name)s application." msgstr "Modelle, die in der Anwendung %(name)s vorhanden sind." -#: .\contrib\admin\templates\admin\index.html.py:18 +#: contrib/admin/templates/admin/index.html:18 #, python-format msgid "%(name)s" msgstr "%(name)s" -#: .\contrib\admin\templates\admin\index.html.py:34 +#: contrib/admin/templates/admin/index.html:34 msgid "Change" msgstr "Ändern" -#: .\contrib\admin\templates\admin\index.html.py:44 +#: contrib/admin/templates/admin/index.html:44 msgid "You don't have permission to edit anything." msgstr "Sie haben keine Berechtigung irgendwas zu ändern." -#: .\contrib\admin\templates\admin\index.html.py:52 +#: contrib/admin/templates/admin/index.html:52 msgid "Recent Actions" msgstr "Kürzliche Aktionen" -#: .\contrib\admin\templates\admin\index.html.py:53 +#: contrib/admin/templates/admin/index.html:53 msgid "My Actions" msgstr "Meine Aktionen" -#: .\contrib\admin\templates\admin\index.html.py:57 +#: contrib/admin/templates/admin/index.html:57 msgid "None available" msgstr "Keine vorhanden" -#: .\contrib\admin\templates\admin\invalid_setup.html.py: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 "Etwas stimmt nicht mit der Datenbankkonfiguration. Bitte sicherstellen, das die richtigen Datenbanktabellen angelegt wurden und bitte sicherstellen, das die Datenbank vom verwendeten Datenbankbenutzer auch lesbar ist." +#: 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 "" +"Etwas stimmt nicht mit der Datenbankkonfiguration. Bitte sicherstellen, das " +"die richtigen Datenbanktabellen angelegt wurden und bitte sicherstellen, das " +"die Datenbank vom verwendeten Datenbankbenutzer auch lesbar ist." -#: .\contrib\admin\templates\admin\login.html.py:17 -#: .\contrib\comments\templates\comments\form.html.py:6 -#: .\contrib\comments\templates\comments\form.html.py:8 +#: contrib/admin/templates/admin/login.html:17 +#: contrib/comments/templates/comments/form.html:6 +#: contrib/comments/templates/comments/form.html:8 msgid "Username:" msgstr "Benutzername:" -#: .\contrib\admin\templates\admin\login.html.py:20 -#: .\contrib\comments\templates\comments\form.html.py:8 +#: contrib/admin/templates/admin/login.html:20 +#: contrib/comments/templates/comments/form.html:8 msgid "Password:" msgstr "Passwort:" -#: .\contrib\admin\templates\admin\login.html.py:25 -#: .\contrib\admin\views\decorators.py:24 +#: contrib/admin/templates/admin/login.html:25 +#: contrib/admin/views/decorators.py:24 msgid "Log in" msgstr "Anmelden" -#: .\contrib\admin\templates\admin\object_history.html.py:18 +#: contrib/admin/templates/admin/object_history.html:18 msgid "Date/time" msgstr "Datum/Zeit" -#: .\contrib\admin\templates\admin\object_history.html.py:19 +#: contrib/admin/templates/admin/object_history.html:19 msgid "User" msgstr "Benutzer" -#: .\contrib\admin\templates\admin\object_history.html.py:20 +#: contrib/admin/templates/admin/object_history.html:20 msgid "Action" msgstr "Aktion" -#: .\contrib\admin\templates\admin\object_history.html.py:26 +#: contrib/admin/templates/admin/object_history.html:26 msgid "DATE_WITH_TIME_FULL" msgstr "j. N Y, H:i" -#: .\contrib\admin\templates\admin\object_history.html.py:36 -msgid "This object doesn't have a change history. It probably wasn't added via this admin site." -msgstr "Dieses Objekt hat keine Änderungsgeschichte. Es wurde möglicherweise nicht über diese Verwaltungsseiten angelegt." +#: 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 "" +"Dieses Objekt hat keine Änderungsgeschichte. Es wurde möglicherweise nicht " +"über diese Verwaltungsseiten angelegt." -#: .\contrib\admin\templates\admin\pagination.html.py:10 +#: contrib/admin/templates/admin/pagination.html:10 msgid "Show all" msgstr "Zeige alle" -#: .\contrib\admin\templates\admin\search_form.html.py:8 +#: contrib/admin/templates/admin/search_form.html:8 msgid "Go" msgstr "Los" -#: .\contrib\admin\templates\admin\search_form.html.py:10 +#: contrib/admin/templates/admin/search_form.html:10 #, python-format msgid "1 result" msgid_plural "%(counter)s results" msgstr[0] "Ein Ergebnis" msgstr[1] "%(counter)s Ergebnisse" -#: .\contrib\admin\templates\admin\search_form.html.py:10 +#: contrib/admin/templates/admin/search_form.html:10 #, python-format msgid "%(full_result_count)s total" msgstr "%(full_result_count)s gesamt" -#: .\contrib\admin\templates\admin\submit_line.html.py:4 +#: contrib/admin/templates/admin/submit_line.html:4 msgid "Save as new" msgstr "Als neu sichern" -#: .\contrib\admin\templates\admin\submit_line.html.py:5 +#: contrib/admin/templates/admin/submit_line.html:5 msgid "Save and add another" msgstr "Sichern und neu hinzufügen" -#: .\contrib\admin\templates\admin\submit_line.html.py:6 +#: contrib/admin/templates/admin/submit_line.html:6 msgid "Save and continue editing" msgstr "Sichern und weiter bearbeiten" -#: .\contrib\admin\templates\admin\submit_line.html.py:7 +#: contrib/admin/templates/admin/submit_line.html:7 msgid "Save" msgstr "Sichern" -#: .\contrib\admin\templates\admin\auth\user\add_form.html.py:6 -msgid "First, enter a username and password. Then, you'll be able to edit more user options." -msgstr "Zuerst einen Benutzer und ein Passwort eingeben. Danach können weitere Optionen für den Benutzer geändert werden." +#: 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 "" +"Zuerst einen Benutzer und ein Passwort eingeben. Danach können weitere " +"Optionen für den Benutzer geändert werden." -#: .\contrib\admin\templates\admin\auth\user\add_form.html.py:12 +#: contrib/admin/templates/admin/auth/user/add_form.html:12 msgid "Username" msgstr "Benutzername" -#: .\contrib\admin\templates\admin\auth\user\add_form.html.py:18 -#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:34 +#: contrib/admin/templates/admin/auth/user/add_form.html:18 +#: contrib/admin/templates/admin/auth/user/change_password.html:34 msgid "Password" msgstr "Passwort" -#: .\contrib\admin\templates\admin\auth\user\add_form.html.py:23 -#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:39 +#: contrib/admin/templates/admin/auth/user/add_form.html:23 +#: contrib/admin/templates/admin/auth/user/change_password.html:39 msgid "Password (again)" msgstr "Passwort (wiederholen)" -#: .\contrib\admin\templates\admin\auth\user\add_form.html.py:24 -#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:40 +#: 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 "Bitte das gleiche Passwort zur Überprüfung nochmal eingeben." -#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:28 +#: contrib/admin/templates/admin/auth/user/change_password.html:28 #, python-format msgid "Enter a new password for the user %(username)s." -msgstr "Bitte geben Sie ein neues Passwort für den Benutzer %(username)s ein." +msgstr "" +"Bitte geben Sie ein neues Passwort für den Benutzer %(username)s ein." -#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:3 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 msgid "Bookmarklets" msgstr "Bookmarklets" -#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:5 +#: contrib/admin/templates/admin_doc/bookmarklets.html:5 msgid "Documentation bookmarklets" msgstr "Dokumentations-Bookmarklets" -#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:9 +#: contrib/admin/templates/admin_doc/bookmarklets.html:9 msgid "" "\n" "

    To install bookmarklets, drag the link to your bookmarks\n" @@ -559,692 +614,742 @@ msgid "" "your computer is \"internal\").

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

    Um Bookmarklets zu installieren müssen diese Links in die\n" -"Browser-Werkzeugleiste gezogen werden, oder mittels rechter Maustaste in die\n" -"Bookmarks gespeichert werden. Danach können die Bookmarklets von jeder Seite\n" +"

    Um Bookmarklets zu installieren, müssen diese Links in die\n" +"Browser-Werkzeugleiste gezogen werden, oder mittels rechter Maustaste in " +"die\n" +"Bookmarks gespeichert werden. Danach können die Bookmarklets von jeder " +"Seite\n" "aufgerufen werden. Einige Bookmarklets sind für den Zugriff von 'internen'\n" "Rechnern eingeschränkt. Falls nicht klar ist, ob ein Rechner als 'intern'\n" "bewertet wird, bitte den Administrator fragen.

    \n" -#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:19 +#: contrib/admin/templates/admin_doc/bookmarklets.html:19 msgid "Documentation for this page" msgstr "Dokumentation für diese Seite" -#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:20 -msgid "Jumps you from any page to the documentation for the view that generates that page." -msgstr "Springt von jeder Seite zu der Dokumentation für den View der diese Seite erzeugt." +#: 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 "" +"Springt von jeder Seite zu der Dokumentation für den View der diese Seite " +"erzeugt." -#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:22 +#: contrib/admin/templates/admin_doc/bookmarklets.html:22 msgid "Show object ID" msgstr "Objekt-ID anzeigen" -#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:23 -msgid "Shows the content-type and unique ID for pages that represent a single object." -msgstr "Zeigt den Content-Type und die eindeutige ID für Seiten die ein einzelnes Objekt repräsentieren." +#: contrib/admin/templates/admin_doc/bookmarklets.html:23 +msgid "" +"Shows the content-type and unique ID for pages that represent a single " +"object." +msgstr "" +"Zeigt den Content-Type und die eindeutige ID für Seiten die ein einzelnes " +"Objekt repräsentieren." -#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:25 +#: contrib/admin/templates/admin_doc/bookmarklets.html:25 msgid "Edit this object (current window)" msgstr "Dieses Objekt im aktuellen Fenster ändern." -#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:26 +#: contrib/admin/templates/admin_doc/bookmarklets.html:26 msgid "Jumps to the admin page for pages that represent a single object." -msgstr "Springt zu der Administrationsseite für dieses Objekt, wenn diese Seite ein Objekt repräsentiert." +msgstr "" +"Springt zu der Administrationsseite für dieses Objekt, wenn diese Seite ein " +"Objekt repräsentiert." -#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:28 +#: contrib/admin/templates/admin_doc/bookmarklets.html:28 msgid "Edit this object (new window)" msgstr "Dieses Objekt in einem neuen Fenster ändern." -#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:29 +#: contrib/admin/templates/admin_doc/bookmarklets.html:29 msgid "As above, but opens the admin page in a new window." -msgstr "Wie zuvor, aber öffnet die Administrationsseite in einem neuen Fenster." +msgstr "" +"Wie zuvor, aber öffnet die Administrationsseite in einem neuen Fenster." -#: .\contrib\admin\templates\registration\logged_out.html.py:8 +#: contrib/admin/templates/registration/logged_out.html:8 msgid "Thanks for spending some quality time with the Web site today." msgstr "Vielen Dank, dass Sie hier ein paar nette Minuten verbracht haben." -#: .\contrib\admin\templates\registration\logged_out.html.py:10 +#: contrib/admin/templates/registration/logged_out.html:10 msgid "Log in again" msgstr "Erneut anmelden" -#: .\contrib\admin\templates\registration\password_change_done.html.py:4 -#: .\contrib\admin\templates\registration\password_change_form.html.py:4 -#: .\contrib\admin\templates\registration\password_change_form.html.py:6 -#: .\contrib\admin\templates\registration\password_change_form.html.py:10 +#: 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 "Passwort ändern" -#: .\contrib\admin\templates\registration\password_change_done.html.py:6 -#: .\contrib\admin\templates\registration\password_change_done.html.py:10 +#: contrib/admin/templates/registration/password_change_done.html:6 +#: contrib/admin/templates/registration/password_change_done.html:10 msgid "Password change successful" msgstr "Passwort erfolgreich geändert" -#: .\contrib\admin\templates\registration\password_change_done.html.py:12 +#: contrib/admin/templates/registration/password_change_done.html:12 msgid "Your password was changed." msgstr "Ihr Passwort wurde geändert." -#: .\contrib\admin\templates\registration\password_change_form.html.py: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 "Bitte geben Sie aus Sicherheitsgründen erst Ihr altes Passwort und darunter dann zweimal (um sicherzustellen, dass Sie es korrekt eingegeben haben) das neue Kennwort ein." +#: 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 "" +"Bitte geben Sie aus Sicherheitsgründen erst Ihr altes Passwort und darunter " +"dann zweimal (um sicherzustellen, dass Sie es korrekt eingegeben haben) das " +"neue Kennwort ein." -#: .\contrib\admin\templates\registration\password_change_form.html.py:17 +#: contrib/admin/templates/registration/password_change_form.html:17 msgid "Old password:" msgstr "Altes Passwort:" -#: .\contrib\admin\templates\registration\password_change_form.html.py:19 +#: contrib/admin/templates/registration/password_change_form.html:19 msgid "New password:" msgstr "Neues Passwort:" -#: .\contrib\admin\templates\registration\password_change_form.html.py:21 +#: contrib/admin/templates/registration/password_change_form.html:21 msgid "Confirm password:" msgstr "Passwort wiederholen:" -#: .\contrib\admin\templates\registration\password_change_form.html.py:23 +#: contrib/admin/templates/registration/password_change_form.html:23 msgid "Change my password" msgstr "Mein Passwort ändern" -#: .\contrib\admin\templates\registration\password_reset_done.html.py:4 -#: .\contrib\admin\templates\registration\password_reset_form.html.py:4 -#: .\contrib\admin\templates\registration\password_reset_form.html.py:6 -#: .\contrib\admin\templates\registration\password_reset_form.html.py:10 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:6 +#: contrib/admin/templates/registration/password_reset_form.html:10 msgid "Password reset" msgstr "Passwort zurücksetzen" -#: .\contrib\admin\templates\registration\password_reset_done.html.py:6 -#: .\contrib\admin\templates\registration\password_reset_done.html.py:10 +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 msgid "Password reset successful" msgstr "Passwort wurde erfolgreich zurückgesetzt" -#: .\contrib\admin\templates\registration\password_reset_done.html.py:12 -msgid "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly." -msgstr "Wir haben ein neues Passwort an die von Ihnen angegebene E-Mail-Adresse geschickt. Sie sollten es in Kürze erhalten." +#: 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 "" +"Wir haben ein neues Passwort an die von Ihnen angegebene E-Mail-Adresse " +"geschickt. Sie sollten es in Kürze erhalten." -#: .\contrib\admin\templates\registration\password_reset_email.html.py:2 +#: contrib/admin/templates/registration/password_reset_email.html:2 msgid "You're receiving this e-mail because you requested a password reset" msgstr "Sie erhalten diese E-Mail, weil Sie ein neues Passwort" -#: .\contrib\admin\templates\registration\password_reset_email.html.py:3 +#: contrib/admin/templates/registration/password_reset_email.html:3 #, python-format msgid "for your user account at %(site_name)s" msgstr "für Ihren Benutzer bei %(site_name)s angefordert haben." -#: .\contrib\admin\templates\registration\password_reset_email.html.py:5 +#: contrib/admin/templates/registration/password_reset_email.html:5 #, python-format msgid "Your new password is: %(new_password)s" msgstr "Ihr neues Passwort lautet: %(new_password)s" -#: .\contrib\admin\templates\registration\password_reset_email.html.py:7 +#: contrib/admin/templates/registration/password_reset_email.html:7 msgid "Feel free to change this password by going to this page:" msgstr "Sie können das Passwort auf folgender Seite ändern:" -#: .\contrib\admin\templates\registration\password_reset_email.html.py:11 +#: contrib/admin/templates/registration/password_reset_email.html:11 msgid "Your username, in case you've forgotten:" msgstr "Ihr Benutzername, falls Sie ihn vergessen haben:" -#: .\contrib\admin\templates\registration\password_reset_email.html.py:13 +#: contrib/admin/templates/registration/password_reset_email.html:13 msgid "Thanks for using our site!" msgstr "Vielen Dank, dass Sie unsere Seiten benutzen!" -#: .\contrib\admin\templates\registration\password_reset_email.html.py:15 +#: contrib/admin/templates/registration/password_reset_email.html:15 #, python-format msgid "The %(site_name)s team" msgstr "Das Team von %(site_name)s" -#: .\contrib\admin\templates\registration\password_reset_form.html.py: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 "Passwort vergessen? Einfach die E-Mail-Adresse eingeben und wir setzen das Passwort zurück und lassen es Ihnen per E-Mail zukommen." +#: 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 "" +"Passwort vergessen? Einfach die E-Mail-Adresse eingeben und wir setzen das " +"Passwort zurück und lassen es Ihnen per E-Mail zukommen." -#: .\contrib\admin\templates\registration\password_reset_form.html.py:16 +#: contrib/admin/templates/registration/password_reset_form.html:16 msgid "E-mail address:" msgstr "E-Mail-Adresse:" -#: .\contrib\admin\templates\registration\password_reset_form.html.py:16 +#: contrib/admin/templates/registration/password_reset_form.html:16 msgid "Reset my password" msgstr "Mein Passwort zurücksetzen" -#: .\contrib\admin\templates\widget\date_time.html.py:3 +#: contrib/admin/templates/widget/date_time.html:3 msgid "Date:" msgstr "Datum:" -#: .\contrib\admin\templates\widget\date_time.html.py:4 +#: contrib/admin/templates/widget/date_time.html:4 msgid "Time:" msgstr "Zeit:" -#: .\contrib\admin\templates\widget\file.html.py:2 +#: contrib/admin/templates/widget/file.html:2 msgid "Currently:" msgstr "Derzeit:" -#: .\contrib\admin\templates\widget\file.html.py:3 +#: contrib/admin/templates/widget/file.html:3 msgid "Change:" msgstr "Ändern:" -#: .\contrib\admin\templatetags\admin_list.py:238 +#: contrib/admin/templatetags/admin_list.py:247 msgid "All dates" msgstr "Alle Tage" -#: .\contrib\admin\views\auth.py:19 -#: .\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 "%(name)s \"%(obj)s\" wurde erfolgreich hinzugefügt." -#: .\contrib\admin\views\auth.py:24 -#: .\contrib\admin\views\main.py:261 -#: .\contrib\admin\views\main.py:347 +#: 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 "Das Element kann jetzt weiter bearbeitet werden." -#: .\contrib\admin\views\auth.py:30 +#: contrib/admin/views/auth.py:30 msgid "Add user" msgstr "Benutzer hinzufügen" -#: .\contrib\admin\views\auth.py:57 +#: contrib/admin/views/auth.py:57 msgid "Password changed successfully." msgstr "Passwort erfolgreich geändert." -#: .\contrib\admin\views\auth.py:64 +#: contrib/admin/views/auth.py:64 #, python-format msgid "Change password: %s" msgstr "Passwort ändern: %s" -#: .\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 "Bitte einen Benutzernamen und ein Passwort eingeben. Beide Felder berücksichtigen die Groß-/Kleinschreibung." +#: 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 "" +"Bitte einen Benutzernamen und ein Passwort eingeben. Beide Felder " +"berücksichtigen die Groß-/Kleinschreibung." -#: .\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 "Bitte neu anmelden, da die Session ausgelaufen ist. Keine Angst, die Beiträge wurden gesichert." +#: 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 "" +"Bitte neu anmelden, da die Session ausgelaufen ist. Keine Angst, die " +"Beiträge wurden gesichert." -#: .\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 "Es sieht danach aus, dass der Browser keine Cookies akzeptiert. Bitte im Browser Cookies aktivieren und diese Seite neu laden." +#: 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 "" +"Es sieht danach aus, dass der Browser keine Cookies akzeptiert. Bitte im " +"Browser Cookies aktivieren und diese Seite neu laden." -#: .\contrib\admin\views\decorators.py:83 +#: contrib/admin/views/decorators.py:83 msgid "Usernames cannot contain the '@' character." msgstr "Benutzernamen dürfen das Zeichen '@' nicht enthalten." -#: .\contrib\admin\views\decorators.py:85 +#: contrib/admin/views/decorators.py:85 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." -msgstr "Die E-Mail-Adresse entspricht nicht Ihrem Benutzernamen. Bitte stattdessen '%s' versuchen." +msgstr "" +"Die E-Mail-Adresse entspricht nicht Ihrem Benutzernamen. Bitte stattdessen '%" +"s' versuchen." -#: .\contrib\admin\views\doc.py:46 -#: .\contrib\admin\views\doc.py:48 -#: .\contrib\admin\views\doc.py:50 +#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48 +#: contrib/admin/views/doc.py:50 msgid "tag:" msgstr "Schlagwort:" -#: .\contrib\admin\views\doc.py:77 -#: .\contrib\admin\views\doc.py:79 -#: .\contrib\admin\views\doc.py:81 +#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79 +#: contrib/admin/views/doc.py:81 msgid "filter:" msgstr "Filter:" -#: .\contrib\admin\views\doc.py:135 -#: .\contrib\admin\views\doc.py:137 -#: .\contrib\admin\views\doc.py:139 +#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137 +#: contrib/admin/views/doc.py:139 msgid "view:" msgstr "Ansicht:" -#: .\contrib\admin\views\doc.py:164 +#: contrib/admin/views/doc.py:164 #, python-format msgid "App %r not found" msgstr "Anwendung %r nicht gefunden" -#: .\contrib\admin\views\doc.py:171 +#: contrib/admin/views/doc.py:171 #, python-format -msgid "Model %r not found in app %r" -msgstr "Modell %r wurde nicht in Anwendung %r gefunden" +msgid "Model %(name)r not found in app %(label)r" +msgstr "Modell %(name)r wurde nicht in Anwendung %(label)r gefunden" -#: .\contrib\admin\views\doc.py:183 +#: contrib/admin/views/doc.py:183 #, python-format -msgid "the related `%s.%s` object" -msgstr "Das verknüpfte `%s.%s` Objekt" +msgid "the related `%(label)s.%(type)s` object" +msgstr "Das verknüpfte `%(label)s.%(type)s` Objekt" -#: .\contrib\admin\views\doc.py:183 -#: .\contrib\admin\views\doc.py:205 -#: .\contrib\admin\views\doc.py:219 -#: .\contrib\admin\views\doc.py:224 +#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205 +#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224 msgid "model:" msgstr "Modell:" -#: .\contrib\admin\views\doc.py:214 +#: contrib/admin/views/doc.py:214 #, python-format -msgid "related `%s.%s` objects" -msgstr "verknüpftes `%s.%s` Objekt" +msgid "related `%(label)s.%(name)s` objects" +msgstr "verknüpftes `%(label)s.%(name)s` Objekt" -#: .\contrib\admin\views\doc.py:219 +#: contrib/admin/views/doc.py:219 #, python-format msgid "all %s" msgstr "Alle %s" -#: .\contrib\admin\views\doc.py:224 +#: contrib/admin/views/doc.py:224 #, python-format msgid "number of %s" msgstr "Anzahl von %s" -#: .\contrib\admin\views\doc.py:229 +#: contrib/admin/views/doc.py:229 #, python-format msgid "Fields on %s objects" msgstr "Felder am %s Objekt" -#: .\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 +#: 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 "Ganzzahl" -#: .\contrib\admin\views\doc.py:292 +#: contrib/admin/views/doc.py:292 msgid "Boolean (Either True or False)" msgstr "Boolscher Wert (True oder False)" -#: .\contrib\admin\views\doc.py:293 -#: .\contrib\admin\views\doc.py:311 +#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311 #, python-format msgid "String (up to %(maxlength)s)" msgstr "Zeichenkette (bis zu %(maxlength)s Zeichen)" -#: .\contrib\admin\views\doc.py:294 +#: contrib/admin/views/doc.py:294 msgid "Comma-separated integers" msgstr "Kommaseparierte Liste von Ganzzahlen" -#: .\contrib\admin\views\doc.py:295 +#: contrib/admin/views/doc.py:295 msgid "Date (without time)" msgstr "Datum (ohne Uhrzeit)" -#: .\contrib\admin\views\doc.py:296 +#: contrib/admin/views/doc.py:296 msgid "Date (with time)" msgstr "Datum (mit Uhrzeit)" -#: .\contrib\admin\views\doc.py:297 +#: contrib/admin/views/doc.py:297 msgid "E-mail address" msgstr "E-Mail-Adresse" -#: .\contrib\admin\views\doc.py:298 -#: .\contrib\admin\views\doc.py:299 -#: .\contrib\admin\views\doc.py:302 +#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299 +#: contrib/admin/views/doc.py:302 msgid "File path" msgstr "Dateipfad" -#: .\contrib\admin\views\doc.py:300 +#: contrib/admin/views/doc.py:300 msgid "Decimal number" msgstr "Dezimalzahl" -#: .\contrib\admin\views\doc.py:304 -#: .\contrib\comments\models.py:85 +#: contrib/admin/views/doc.py:304 contrib/comments/models.py:85 msgid "IP address" msgstr "IP-Adresse" -#: .\contrib\admin\views\doc.py:306 +#: contrib/admin/views/doc.py:306 msgid "Boolean (Either True, False or None)" msgstr "Boolscher Wert (True, False oder None)" -#: .\contrib\admin\views\doc.py:307 +#: contrib/admin/views/doc.py:307 msgid "Relation to parent model" msgstr "Beziehung zum Eltern-Modell" -#: .\contrib\admin\views\doc.py:308 +#: contrib/admin/views/doc.py:308 msgid "Phone number" msgstr "Telefonnummer" -#: .\contrib\admin\views\doc.py:313 +#: contrib/admin/views/doc.py:313 msgid "Text" msgstr "Text" -#: .\contrib\admin\views\doc.py:314 +#: contrib/admin/views/doc.py:314 msgid "Time" msgstr "Zeit" -#: .\contrib\admin\views\doc.py:315 -#: .\contrib\flatpages\models.py:7 +#: contrib/admin/views/doc.py:315 contrib/flatpages/models.py:7 msgid "URL" msgstr "Adresse (URL)" -#: .\contrib\admin\views\doc.py:316 +#: contrib/admin/views/doc.py:316 msgid "U.S. state (two uppercase letters)" msgstr "U.S. Bundesstaat (zwei Großbuchstaben)" -#: .\contrib\admin\views\doc.py:317 +#: contrib/admin/views/doc.py:317 msgid "XML text" msgstr "XML-Text" -#: .\contrib\admin\views\doc.py:343 +#: contrib/admin/views/doc.py:343 #, python-format msgid "%s does not appear to be a urlpattern object" msgstr "%s ist scheinbar kein urlpattern Objekt" -#: .\contrib\admin\views\main.py:223 +#: contrib/admin/views/main.py:223 msgid "Site administration" -msgstr "Website Verwaltung" +msgstr "Website-Verwaltung" -#: .\contrib\admin\views\main.py:271 -#: .\contrib\admin\views\main.py:356 +#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356 #, python-format msgid "You may add another %s below." msgstr "Jetzt kann ein weiteres Element vom Typ %s angelegt werden." -#: .\contrib\admin\views\main.py:289 +#: contrib/admin/views/main.py:289 #, python-format msgid "Add %s" msgstr "%s hinzufügen" -#: .\contrib\admin\views\main.py:335 +#: contrib/admin/views/main.py:335 #, python-format msgid "Added %s." msgstr "%s hinzugefügt." -#: .\contrib\admin\views\main.py:335 -#: .\contrib\admin\views\main.py:337 -#: .\contrib\admin\views\main.py:339 -#: .\db\models\manipulators.py:306 +#: contrib/admin/views/main.py:335 contrib/admin/views/main.py:337 +#: contrib/admin/views/main.py:339 db/models/manipulators.py:308 msgid "and" msgstr "und" -#: .\contrib\admin\views\main.py:337 +#: contrib/admin/views/main.py:337 #, python-format msgid "Changed %s." -msgstr "%s geändert" +msgstr "%s geändert." -#: .\contrib\admin\views\main.py:339 +#: contrib/admin/views/main.py:339 #, python-format msgid "Deleted %s." msgstr "%s gelöscht." -#: .\contrib\admin\views\main.py:342 +#: contrib/admin/views/main.py:342 msgid "No fields changed." msgstr "Keine Felder geändert." -#: .\contrib\admin\views\main.py:345 +#: contrib/admin/views/main.py:345 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." msgstr "%(name)s \"%(obj)s\" wurde erfolgreich geändert." -#: .\contrib\admin\views\main.py:353 +#: 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\" wurde erfolgreich hinzugefügt. Das Element kann jetzt geändert werden." +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "" +"%(name)s \"%(obj)s\" wurde erfolgreich hinzugefügt. Das Element kann jetzt " +"geändert werden." -#: .\contrib\admin\views\main.py:391 +#: contrib/admin/views/main.py:391 #, python-format msgid "Change %s" msgstr "%s ändern" -#: .\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 "Ein oder mehrere %(fieldname)s in %(name)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 "Ein oder mehrere %(fieldname)s in %(name)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 "%(name)s \"%(obj)s\" wurde erfolgreich gelöscht." -#: .\contrib\admin\views\main.py:514 +#: contrib/admin/views/main.py:517 msgid "Are you sure?" msgstr "Sind Sie ganz sicher?" -#: .\contrib\admin\views\main.py:536 +#: contrib/admin/views/main.py:539 #, python-format msgid "Change history: %s" msgstr "Änderungsgeschichte: %s" -#: .\contrib\admin\views\main.py:570 +#: contrib/admin/views/main.py:573 #, python-format msgid "Select %s" msgstr "%s auswählen" -#: .\contrib\admin\views\main.py:570 +#: contrib/admin/views/main.py:573 #, python-format msgid "Select %s to change" msgstr "%s zur Änderung auswählen" -#: .\contrib\admin\views\main.py:758 +#: contrib/admin/views/main.py:768 msgid "Database error" msgstr "Datenbankfehler" -#: .\contrib\auth\forms.py:16 -#: .\contrib\auth\forms.py:137 +#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 msgid "The two password fields didn't match." msgstr "Die beiden Passwörter sind nicht identisch." -#: .\contrib\auth\forms.py:24 +#: contrib/auth/forms.py:25 msgid "A user with that username already exists." msgstr "Ein Benutzer mit diesem Namen existiert bereits." -#: .\contrib\auth\forms.py:52 -msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in." -msgstr "Der Webbrowser scheint keine Cookies aktiviert zu haben. Cookies sind für die Anmeldung zwingend erforderlich." +#: contrib/auth/forms.py:53 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "" +"Der Webbrowser scheint keine Cookies aktiviert zu haben. Cookies sind für " +"die Anmeldung zwingend erforderlich." -#: .\contrib\auth\forms.py:61 +#: contrib/auth/forms.py:62 msgid "This account is inactive." msgstr "Dieser Benutzer ist inaktiv." -#: .\contrib\auth\forms.py:84 -msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?" -msgstr "Zu dieser E-Mail-Adresse existiert kein Benutzer. Sicher, dass Sie sich mit dieser Adresse angemeldet haben?" +#: contrib/auth/forms.py:85 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "" +"Zu dieser E-Mail-Adresse existiert kein Benutzer. Sicher, dass Sie sich mit " +"dieser Adresse angemeldet haben?" -#: .\contrib\auth\forms.py:116 +#: contrib/auth/forms.py:117 msgid "The two 'new password' fields didn't match." msgstr "Die beiden neuen Passwörter sind nicht identisch." -#: .\contrib\auth\forms.py:123 +#: contrib/auth/forms.py:124 msgid "Your old password was entered incorrectly. Please enter it again." msgstr "Das alte Passwort war falsch. Bitte neu eingeben." -#: .\contrib\auth\models.py:38 -#: .\contrib\auth\models.py:57 +#: contrib/auth/models.py:38 contrib/auth/models.py:58 msgid "name" msgstr "Name" -#: .\contrib\auth\models.py:40 +#: contrib/auth/models.py:40 msgid "codename" msgstr "Codename" -#: .\contrib\auth\models.py:42 +#: contrib/auth/models.py:43 msgid "permission" msgstr "Berechtigung" -#: .\contrib\auth\models.py:43 -#: .\contrib\auth\models.py:58 +#: contrib/auth/models.py:44 contrib/auth/models.py:59 msgid "permissions" msgstr "Berechtigungen" -#: .\contrib\auth\models.py:60 +#: contrib/auth/models.py:62 msgid "group" msgstr "Gruppe" -#: .\contrib\auth\models.py:61 -#: .\contrib\auth\models.py:100 +#: contrib/auth/models.py:63 contrib/auth/models.py:103 msgid "groups" msgstr "Gruppen" -#: .\contrib\auth\models.py:90 +#: contrib/auth/models.py:93 msgid "username" msgstr "Benutzername" -#: .\contrib\auth\models.py:90 -msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)." -msgstr "Erforderlich. 30 Zeichen oder weniger. Alphanumerische Zeichen (Buchstaben, Ziffern und Unterstriche sind erlaubt)." +#: contrib/auth/models.py:93 +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "" +"Erforderlich. 30 Zeichen oder weniger. Alphanumerische Zeichen (Buchstaben, " +"Ziffern und Unterstriche sind erlaubt)." -#: .\contrib\auth\models.py:91 +#: contrib/auth/models.py:94 msgid "first name" msgstr "Vorname" -#: .\contrib\auth\models.py:92 +#: contrib/auth/models.py:95 msgid "last name" msgstr "Nachname" -#: .\contrib\auth\models.py:93 +#: contrib/auth/models.py:96 msgid "e-mail address" msgstr "E-Mail-Adresse" -#: .\contrib\auth\models.py:94 +#: contrib/auth/models.py:97 msgid "password" msgstr "Passwort" -#: .\contrib\auth\models.py:94 -msgid "Use '[algo]$[salt]$[hexdigest]' or use the change password form." -msgstr "Die Form '[algo]$[salt]$[hexdigest]' verwenden, oder das Passwort ändern Formular benutzen." +#: contrib/auth/models.py:97 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "" +"Die Form '[algo]$[salt]$[hexdigest]' verwenden, oder das Passwort ändern Formular benutzen." -#: .\contrib\auth\models.py:95 +#: contrib/auth/models.py:98 msgid "staff status" msgstr "Administrator" -#: .\contrib\auth\models.py:95 +#: contrib/auth/models.py:98 msgid "Designates whether the user can log into this admin site." -msgstr "Legt fest, ob sich der Benutzer an der Administrationsseite anmelden kann." +msgstr "" +"Legt fest, ob sich der Benutzer an der Administrationsseite anmelden kann." -#: .\contrib\auth\models.py:96 +#: contrib/auth/models.py:99 msgid "active" msgstr "Aktiv" -#: .\contrib\auth\models.py:96 -msgid "Designates whether this user can log into the Django admin. Unselect this instead of deleting accounts." -msgstr "Legt fest, ob sich der Benutzer an der Administrationsseite anmelden kann. Anstatt einen Benutzer zu löschen, kann er hier auch einfach deaktiviert werden." +#: contrib/auth/models.py:99 +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "" +"Legt fest, ob sich der Benutzer an der Administrationsseite anmelden kann. " +"Anstatt einen Benutzer zu löschen, kann er hier auch einfach deaktiviert " +"werden." -#: .\contrib\auth\models.py:97 +#: contrib/auth/models.py:100 msgid "superuser status" msgstr "Hauptadmin." -#: .\contrib\auth\models.py:97 -msgid "Designates that this user has all permissions without explicitly assigning them." -msgstr "Legt fest, dass der Benutzer alle Berechtigungen hat, ohne diese einzeln zuweisen zu müssen." +#: contrib/auth/models.py:100 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" +"Legt fest, dass der Benutzer alle Berechtigungen hat, ohne diese einzeln " +"zuweisen zu müssen." -#: .\contrib\auth\models.py:98 +#: contrib/auth/models.py:101 msgid "last login" msgstr "Letzte Anmeldung" -#: .\contrib\auth\models.py:99 +#: contrib/auth/models.py:102 msgid "date joined" msgstr "Mitglied seit" -#: .\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 "Zusätzlich zu den manuell angelegten Rechten erhält dieser Benutzer auch alle Rechte, die seine zugewiesenen Gruppen haben." +#: contrib/auth/models.py:104 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" +"Zusätzlich zu den manuell angelegten Rechten erhält dieser Benutzer auch " +"alle Rechte, die seine zugewiesenen Gruppen haben." -#: .\contrib\auth\models.py:102 +#: contrib/auth/models.py:105 msgid "user permissions" msgstr "Berechtigungen" -#: .\contrib\auth\models.py:105 +#: contrib/auth/models.py:109 msgid "user" msgstr "Benutzer" -#: .\contrib\auth\models.py:106 +#: contrib/auth/models.py:110 msgid "users" msgstr "Benutzer" -#: .\contrib\auth\models.py:111 +#: contrib/auth/models.py:116 msgid "Personal info" msgstr "Persönliche Infos" -#: .\contrib\auth\models.py:112 +#: contrib/auth/models.py:117 msgid "Permissions" msgstr "Berechtigungen" -#: .\contrib\auth\models.py:113 +#: contrib/auth/models.py:118 msgid "Important dates" msgstr "Wichtige Daten" -#: .\contrib\auth\models.py:114 +#: contrib/auth/models.py:119 msgid "Groups" msgstr "Gruppen" -#: .\contrib\auth\models.py:258 +#: contrib/auth/models.py:263 msgid "message" msgstr "Mitteilung" -#: .\contrib\auth\views.py:39 +#: contrib/auth/views.py:39 msgid "Logged out" msgstr "Abgemeldet" -#: .\contrib\comments\models.py:67 -#: .\contrib\comments\models.py:166 +#: contrib/comments/models.py:67 contrib/comments/models.py:166 msgid "object ID" msgstr "Objekt-ID" -#: .\contrib\comments\models.py:68 +#: contrib/comments/models.py:68 msgid "headline" msgstr "Überschrift" -#: .\contrib\comments\models.py:69 -#: .\contrib\comments\models.py:90 -#: .\contrib\comments\models.py:167 +#: contrib/comments/models.py:69 contrib/comments/models.py:90 +#: contrib/comments/models.py:167 msgid "comment" msgstr "Kommentar" -#: .\contrib\comments\models.py:70 +#: contrib/comments/models.py:70 msgid "rating #1" msgstr "Bewertung #1" -#: .\contrib\comments\models.py:71 +#: contrib/comments/models.py:71 msgid "rating #2" msgstr "Bewertung #2" -#: .\contrib\comments\models.py:72 +#: contrib/comments/models.py:72 msgid "rating #3" msgstr "Bewertung #3" -#: .\contrib\comments\models.py:73 +#: contrib/comments/models.py:73 msgid "rating #4" msgstr "Bewertung #4" -#: .\contrib\comments\models.py:74 +#: contrib/comments/models.py:74 msgid "rating #5" msgstr "Bewertung #5" -#: .\contrib\comments\models.py:75 +#: contrib/comments/models.py:75 msgid "rating #6" msgstr "Bewertung #6" -#: .\contrib\comments\models.py:76 +#: contrib/comments/models.py:76 msgid "rating #7" msgstr "Bewertung #7" -#: .\contrib\comments\models.py:77 +#: contrib/comments/models.py:77 msgid "rating #8" msgstr "Bewertung #8" -#: .\contrib\comments\models.py:82 +#: contrib/comments/models.py:82 msgid "is valid rating" msgstr "ist eine Bewertung" -#: .\contrib\comments\models.py:83 -#: .\contrib\comments\models.py:169 +#: contrib/comments/models.py:83 contrib/comments/models.py:169 msgid "date/time submitted" msgstr "Datum/Zeit Erstellung" -#: .\contrib\comments\models.py:84 -#: .\contrib\comments\models.py:170 +#: contrib/comments/models.py:84 contrib/comments/models.py:170 msgid "is public" msgstr "ist öffentlich" -#: .\contrib\comments\models.py:86 +#: contrib/comments/models.py:86 msgid "is removed" msgstr "ist gelöscht" -#: .\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 "Hier einen Haken setzen, wenn der Kommentar unpassend ist. Stattdessen wird dann \"Dieser Kommentar wurde entfernt\" Meldung angezeigt." +#: 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 "" +"Hier einen Haken setzen, wenn der Kommentar unpassend ist. Stattdessen wird " +"dann \"Dieser Kommentar wurde entfernt\" Meldung angezeigt." -#: .\contrib\comments\models.py:91 +#: contrib/comments/models.py:91 msgid "comments" msgstr "Kommentare" -#: .\contrib\comments\models.py:131 -#: .\contrib\comments\models.py:207 +#: contrib/comments/models.py:131 contrib/comments/models.py:207 msgid "Content object" msgstr "Inhaltsobjekt" -#: .\contrib\comments\models.py:159 +#: contrib/comments/models.py:159 #, python-format msgid "" "Posted by %(user)s at %(date)s\n" @@ -1259,48 +1364,48 @@ msgstr "" "\n" "http://%(domain)s%(url)s" -#: .\contrib\comments\models.py:168 +#: contrib/comments/models.py:168 msgid "person's name" msgstr "Autorname" -#: .\contrib\comments\models.py:171 +#: contrib/comments/models.py:171 msgid "ip address" msgstr "IP-Adresse" -#: .\contrib\comments\models.py:173 +#: contrib/comments/models.py:173 msgid "approved by staff" msgstr "Bestätigt vom Betreiber" -#: .\contrib\comments\models.py:176 +#: contrib/comments/models.py:176 msgid "free comment" msgstr "Freier Kommentar" -#: .\contrib\comments\models.py:177 +#: contrib/comments/models.py:177 msgid "free comments" msgstr "Freie Kommentare" -#: .\contrib\comments\models.py:233 +#: contrib/comments/models.py:233 msgid "score" msgstr "Bewertung" -#: .\contrib\comments\models.py:234 +#: contrib/comments/models.py:234 msgid "score date" msgstr "Bewertungsdatum" -#: .\contrib\comments\models.py:237 +#: contrib/comments/models.py:237 msgid "karma score" msgstr "Karma Bewertung" -#: .\contrib\comments\models.py:238 +#: contrib/comments/models.py:238 msgid "karma scores" msgstr "Karma Bewertungen" -#: .\contrib\comments\models.py:242 +#: contrib/comments/models.py:242 #, python-format msgid "%(score)d rating by %(user)s" msgstr "%(score)d Bewertung von %(user)s" -#: .\contrib\comments\models.py:258 +#: contrib/comments/models.py:258 #, python-format msgid "" "This comment was flagged by %(user)s:\n" @@ -1311,100 +1416,107 @@ msgstr "" "\n" "%(text)s" -#: .\contrib\comments\models.py:265 +#: contrib/comments/models.py:265 msgid "flag date" msgstr "Kennzeichnungsdatum" -#: .\contrib\comments\models.py:268 +#: contrib/comments/models.py:268 msgid "user flag" msgstr "Benutzerkennzeichnung" -#: .\contrib\comments\models.py:269 +#: contrib/comments/models.py:269 msgid "user flags" msgstr "Benutzerkennzeichnungen" -#: .\contrib\comments\models.py:273 +#: contrib/comments/models.py:273 #, python-format msgid "Flag by %r" msgstr "Gekennzeichnet von %r" -#: .\contrib\comments\models.py:278 +#: contrib/comments/models.py:278 msgid "deletion date" msgstr "Löschdatum" -#: .\contrib\comments\models.py:280 +#: contrib/comments/models.py:280 msgid "moderator deletion" msgstr "Löschung vom Moderator" -#: .\contrib\comments\models.py:281 +#: contrib/comments/models.py:281 msgid "moderator deletions" msgstr "Löschungen vom Moderator" -#: .\contrib\comments\models.py:285 +#: contrib/comments/models.py:285 #, python-format msgid "Moderator deletion by %r" msgstr "Vom Moderator %r gelöscht" -#: .\contrib\comments\templates\comments\form.html.py:8 +#: contrib/comments/templates/comments/form.html:8 msgid "Forgotten your password?" msgstr "Passwort vergessen?" -#: .\contrib\comments\templates\comments\form.html.py:12 +#: contrib/comments/templates/comments/form.html:12 msgid "Ratings" msgstr "Bewertungen" -#: .\contrib\comments\templates\comments\form.html.py:12 -#: .\contrib\comments\templates\comments\form.html.py:23 +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 msgid "Required" msgstr "Erforderlich" -#: .\contrib\comments\templates\comments\form.html.py:12 -#: .\contrib\comments\templates\comments\form.html.py:23 +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 msgid "Optional" msgstr "Optional" -#: .\contrib\comments\templates\comments\form.html.py:23 +#: contrib/comments/templates/comments/form.html:23 msgid "Post a photo" msgstr "Ein Bild veröffentlichen" -#: .\contrib\comments\templates\comments\form.html.py:28 -#: .\contrib\comments\templates\comments\freeform.html.py:5 +#: contrib/comments/templates/comments/form.html:28 +#: contrib/comments/templates/comments/freeform.html:5 msgid "Comment:" msgstr "Kommentar:" -#: .\contrib\comments\templates\comments\form.html.py:35 -#: .\contrib\comments\templates\comments\freeform.html.py:10 +#: contrib/comments/templates/comments/form.html:35 +#: contrib/comments/templates/comments/freeform.html:10 msgid "Preview comment" msgstr "Kommentarvorschau" -#: .\contrib\comments\templates\comments\freeform.html.py:4 +#: contrib/comments/templates/comments/freeform.html:4 msgid "Your name:" msgstr "Ihr Name:" -#: .\contrib\comments\views\comments.py:27 -msgid "This rating is required because you've entered at least one other rating." -msgstr "Diese Abstimmung ist zwingend erforderlich, da Du an mindestens einer weiteren Abstimmung teilnimmst." +#: contrib/comments/views/comments.py:27 +msgid "" +"This rating is required because you've entered at least one other rating." +msgstr "" +"Diese Abstimmung ist zwingend erforderlich, da Sie an mindestens einer " +"weiteren Abstimmung teilnehmen." -#: .\contrib\comments\views\comments.py:111 +#: 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" +"This comment was posted by a user who has posted fewer than %(count)s " +"comment:\n" "\n" "%(text)s" msgid_plural "" -"This comment was posted by a user who has posted fewer than %(count)s comments:\n" +"This comment was posted by a user who has posted fewer than %(count)s " +"comments:\n" "\n" "%(text)s" msgstr[0] "" -"Dieser Kommentar ist von einem Benutzer mit weniger als %(count)s Kommentar:\n" +"Dieser Kommentar ist von einem Benutzer mit weniger als %(count)s " +"Kommentar:\n" "\n" "%(text)s" msgstr[1] "" -"Dieser Kommentar ist von einem Benutzer mit weniger als %(count)s Kommentaren:\n" +"Dieser Kommentar ist von einem Benutzer mit weniger als %(count)s " +"Kommentaren:\n" "\n" "%(text)s" -#: .\contrib\comments\views\comments.py:116 +#: contrib/comments/views/comments.py:116 #, python-format msgid "" "This comment was posted by a sketchy user:\n" @@ -1415,266 +1527,678 @@ msgstr "" "\n" "%(text)s" -#: .\contrib\comments\views\comments.py:188 -#: .\contrib\comments\views\comments.py:280 +#: contrib/comments/views/comments.py:188 +#: contrib/comments/views/comments.py:280 msgid "Only POSTs are allowed" msgstr "Nur POST ist erlaubt" -#: .\contrib\comments\views\comments.py:192 -#: .\contrib\comments\views\comments.py:284 +#: contrib/comments/views/comments.py:192 +#: contrib/comments/views/comments.py:284 msgid "One or more of the required fields wasn't submitted" msgstr "Eines oder mehrere der erforderlichen Felder fehlen" -#: .\contrib\comments\views\comments.py:196 -#: .\contrib\comments\views\comments.py:286 +#: contrib/comments/views/comments.py:196 +#: contrib/comments/views/comments.py:286 msgid "Somebody tampered with the comment form (security violation)" -msgstr "Jemand hat mit dem Kommentarformular herumgespielt (Sicherheitsverletzung)" +msgstr "" +"Jemand hat mit dem Kommentarformular herumgespielt (Sicherheitsverletzung)" -#: .\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 "Das Kommentarformular hatte einen falschen 'target' Parameter -- die Objekt-ID ist ungültig." +#: 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 "" +"Das Kommentarformular hatte einen falschen 'target' Parameter -- die Objekt-" +"ID ist ungültig." -#: .\contrib\comments\views\comments.py:257 -#: .\contrib\comments\views\comments.py:321 +#: contrib/comments/views/comments.py:257 +#: contrib/comments/views/comments.py:321 msgid "The comment form didn't provide either 'preview' or 'post'" -msgstr "Das Kommentarformular wurde nicht mit 'preview' oder 'post' abgeschickt" +msgstr "" +"Das Kommentarformular wurde nicht mit 'preview' oder 'post' abgeschickt" -#: .\contrib\comments\views\karma.py:19 +#: contrib/comments/views/karma.py:19 msgid "Anonymous users cannot vote" msgstr "Anonyme Benutzer dürfen nicht abstimmen" -#: .\contrib\comments\views\karma.py:23 +#: contrib/comments/views/karma.py:23 msgid "Invalid comment ID" msgstr "Ungültige Kommentar-ID" -#: .\contrib\comments\views\karma.py:25 +#: contrib/comments/views/karma.py:25 msgid "No voting for yourself" msgstr "Keine Abstimmung für dich selbst" -#: .\contrib\contenttypes\models.py:26 +#: contrib/contenttypes/models.py:36 msgid "python model class name" msgstr "Python Model-Klassenname" -#: .\contrib\contenttypes\models.py:29 +#: contrib/contenttypes/models.py:39 msgid "content type" msgstr "Inhaltstyp" -#: .\contrib\contenttypes\models.py:30 +#: contrib/contenttypes/models.py:40 msgid "content types" msgstr "Inhaltstypen" -#: .\contrib\flatpages\models.py:8 -msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "Beispiel: '/about/contact/'. Wichtig: vorne und hinten muss ein / stehen." +#: contrib/flatpages/models.py:8 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" +"Beispiel: '/about/contact/'. Wichtig: vorne und hinten muss ein / stehen." -#: .\contrib\flatpages\models.py:9 +#: contrib/flatpages/models.py:9 msgid "title" msgstr "Titel" -#: .\contrib\flatpages\models.py:10 +#: contrib/flatpages/models.py:10 msgid "content" msgstr "Inhalt" -#: .\contrib\flatpages\models.py:11 +#: contrib/flatpages/models.py:11 msgid "enable comments" msgstr "Kommentare aktivieren" -#: .\contrib\flatpages\models.py:12 +#: contrib/flatpages/models.py:12 msgid "template name" msgstr "Name der Vorlage" -#: .\contrib\flatpages\models.py:13 -msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'." -msgstr "Beispiel: 'flatpages/contact_page.html'. Wenn dieses Feld nicht gefüllt ist, wird 'flatpages/default.html' als Standard gewählt." +#: contrib/flatpages/models.py:13 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" +"Beispiel: 'flatpages/contact_page.html'. Wenn dieses Feld nicht gefüllt ist, " +"wird 'flatpages/default.html' als Standard gewählt." -#: .\contrib\flatpages\models.py:14 +#: contrib/flatpages/models.py:14 msgid "registration required" msgstr "Registrierung erforderlich" -#: .\contrib\flatpages\models.py:14 +#: contrib/flatpages/models.py:14 msgid "If this is checked, only logged-in users will be able to view the page." -msgstr "Wenn hier ein Haken gesetzt ist, können nur angemeldete Benutzer diese Seite sehen." +msgstr "" +"Wenn hier ein Haken gesetzt ist, können nur angemeldete Benutzer diese Seite " +"sehen." -#: .\contrib\flatpages\models.py:18 +#: contrib/flatpages/models.py:18 msgid "flat page" msgstr "Webseite" -#: .\contrib\flatpages\models.py:19 +#: contrib/flatpages/models.py:19 msgid "flat pages" msgstr "Webseiten" -#: .\contrib\redirects\models.py:7 +#: contrib/humanize/templatetags/humanize.py:17 +msgid "th" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "st" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "nd" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "rd" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:47 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:50 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:53 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "one" +msgstr "ein" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "two" +msgstr "zwei" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "three" +msgstr "drei" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "four" +msgstr "vier" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "five" +msgstr "fünf" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "six" +msgstr "sechs" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "seven" +msgstr "sieben" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "eight" +msgstr "acht" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "nine" +msgstr "neun" + +#: contrib/localflavor/au/forms.py:18 +msgid "Enter a 4 digit post code." +msgstr "Bitte eine gültige vierstellige Postleitzahl eingeben." + +#: contrib/localflavor/br/forms.py:18 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "Bitte eine gültige Postleitzahl im Format XXXXX-XXX eingeben." + +#: contrib/localflavor/br/forms.py:30 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "Telefonnummern müssen das Format XXX-XXX-XXXX haben." + +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "Baden-Württemberg" + +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "Bayern" + +#: contrib/localflavor/de/de_states.py:7 +msgid "Berlin" +msgstr "Berlin" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "Brandenburg" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "Bremen" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "Hamburg" + +#: contrib/localflavor/de/de_states.py:11 +msgid "Hessen" +msgstr "Hessen" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "Mecklenburg-Vorpommern" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "Niedersachsen" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "Nordrhein-Westfalen" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "Rheinland-Pfalz" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "Saarland" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "Sachsen" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "Sachsen-Anhalt" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "Schleswig-Holstein" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "Thüringen" + +#: contrib/localflavor/de/forms.py:16 contrib/localflavor/fi/forms.py:14 +#: contrib/localflavor/fr/forms.py:17 contrib/localflavor/it/forms.py:14 +msgid "Enter a zip code in the format XXXXX." +msgstr "Bitte eine gültige Postleitzahl im Format XXXXX eingeben." + +#: contrib/localflavor/de/forms.py:60 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "" +"Bitte eine gültige deutsche Personalausweisnummer im Format " +"XXXXXXXXXXX-XXXXXXX-XXXXXXX-X eingeben." + +#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45 +msgid "Enter a valid Finnish social security number." +msgstr "Bitte eine gültige finnische Sozialversicherungsnummer eingeben." + +#: contrib/localflavor/jp/forms.py:21 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "" +"Bitte eine gültige Postleitzahl im Format XXXXXXX oder XXX-XXXX " +"eingeben." + +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:6 +msgid "Iwate" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:16 +msgid "Tokyo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +msgid "Shimane" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +msgid "Kagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +msgid "Ehime" +msgstr "Zeit" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" +msgstr "" + +#: contrib/localflavor/no/forms.py:15 +msgid "Enter a zip code in the format XXXX." +msgstr "Bitte eine gültige Postleitzahl im Format XXXX eingeben." + +#: contrib/localflavor/no/forms.py:36 +msgid "Enter a valid Norwegian social security number." +msgstr "Bitte eine gültige norwegische Sozialversicherungsnummer eingeben." + +#: contrib/localflavor/uk/forms.py:18 +msgid "Enter a postcode. A space is required between the two postcode parts." +msgstr "Bitte eine gültige Postleitzahl eingeben. Ein Leerzeichen trennt die zwei Teile." + +#: contrib/localflavor/us/forms.py:18 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "Bitte eine gültige Postleitzahl im Format XXXXX oder XXXXX-XXXX eingeben." + +#: contrib/localflavor/us/forms.py:51 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "" +"Bitte eine gültige US-amerikanische Sozialversicherungsnummer im Format " +"XXX-XX-XXXX eingeben." + +#: contrib/redirects/models.py:7 msgid "redirect from" msgstr "Umleitung von" -#: .\contrib\redirects\models.py:8 -msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'." -msgstr "Hier sollte ein absoluter Pfad stehen, ohne den Domainnamen. Beispiel: '/events/search/'." +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" +"Hier sollte ein absoluter Pfad stehen, ohne den Domainnamen. Beispiel: '/" +"events/search/'." -#: .\contrib\redirects\models.py:9 +#: contrib/redirects/models.py:9 msgid "redirect to" msgstr "Umleitung zu" -#: .\contrib\redirects\models.py:10 -msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'." -msgstr "Hier muss entweder ein absoluter Pfad oder eine komplette URL mit http:// am Anfang stehen." +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" +"Hier muss entweder ein absoluter Pfad oder eine komplette URL mit http:// am " +"Anfang stehen." -#: .\contrib\redirects\models.py:13 +#: contrib/redirects/models.py:13 msgid "redirect" msgstr "Umleitung" -#: .\contrib\redirects\models.py:14 +#: contrib/redirects/models.py:14 msgid "redirects" msgstr "Umleitungen" -#: .\contrib\sessions\models.py:51 +#: contrib/sessions/models.py:68 msgid "session key" msgstr "Sitzungs-ID" -#: .\contrib\sessions\models.py:52 +#: contrib/sessions/models.py:69 msgid "session data" msgstr "Sitzungsdaten" -#: .\contrib\sessions\models.py:53 +#: contrib/sessions/models.py:70 msgid "expire date" msgstr "Verfallsdatum" -#: .\contrib\sessions\models.py:57 +#: contrib/sessions/models.py:74 msgid "session" msgstr "Sitzung" -#: .\contrib\sessions\models.py:58 +#: contrib/sessions/models.py:75 msgid "sessions" msgstr "Sitzungen" -#: .\contrib\sites\models.py:10 +#: contrib/sites/models.py:10 msgid "domain name" msgstr "Domainname" -#: .\contrib\sites\models.py:11 +#: contrib/sites/models.py:11 msgid "display name" msgstr "Anzeigename" -#: .\contrib\sites\models.py:15 +#: contrib/sites/models.py:15 msgid "site" msgstr "Website" -#: .\contrib\sites\models.py:16 +#: contrib/sites/models.py:16 msgid "sites" msgstr "Websites" -#: .\core\validators.py:64 +#: core/validators.py:64 msgid "This value must contain only letters, numbers and underscores." msgstr "Dieser Wert darf nur Buchstaben, Ziffern und Unterstriche enthalten." -#: .\core\validators.py:68 -msgid "This value must contain only letters, numbers, underscores, dashes or slashes." -msgstr "Dieser Wert darf nur Buchstaben, Ziffern, Unterstriche und Schrägstriche enthalten." +#: core/validators.py:68 +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "" +"Dieser Wert darf nur Buchstaben, Ziffern, Unterstriche und Schrägstriche " +"enthalten." -#: .\core\validators.py:72 +#: core/validators.py:72 msgid "This value must contain only letters, numbers, underscores or hyphens." -msgstr "Dieser Wert darf nur Buchstaben, Ziffern, Unterstriche und Bindestriche enthalten." +msgstr "" +"Dieser Wert darf nur Buchstaben, Ziffern, Unterstriche und Bindestriche " +"enthalten." -#: .\core\validators.py:76 +#: core/validators.py:76 msgid "Uppercase letters are not allowed here." msgstr "Großbuchstaben sind hier nicht erlaubt." -#: .\core\validators.py:80 +#: core/validators.py:80 msgid "Lowercase letters are not allowed here." msgstr "Kleinbuchstaben sind hier nicht erlaubt." -#: .\core\validators.py:87 +#: core/validators.py:87 msgid "Enter only digits separated by commas." msgstr "Hier sind nur durch Komma getrennte Ziffern erlaubt." -#: .\core\validators.py:99 +#: core/validators.py:99 msgid "Enter valid e-mail addresses separated by commas." msgstr "Bitte mit Komma getrennte, gültige E-Mail-Adressen eingeben." -#: .\core\validators.py:103 +#: core/validators.py:103 msgid "Please enter a valid IP address." msgstr "Bitte eine gültige IP-Adresse eingeben." -#: .\core\validators.py:107 +#: core/validators.py:107 msgid "Empty values are not allowed here." msgstr "Dieses Feld darf nicht leer sein." -#: .\core\validators.py:111 +#: core/validators.py:111 msgid "Non-numeric characters aren't allowed here." msgstr "Nichtnumerische Zeichen sind hier nicht erlaubt." -#: .\core\validators.py:115 +#: core/validators.py:115 msgid "This value can't be comprised solely of digits." msgstr "Dieser Wert darf nicht nur aus Ziffern bestehen." -#: .\core\validators.py:120 -#: .\newforms\fields.py:126 +#: core/validators.py:120 newforms/fields.py:128 msgid "Enter a whole number." msgstr "Bitte eine ganze Zahl eingeben." -#: .\core\validators.py:124 +#: core/validators.py:124 msgid "Only alphabetical characters are allowed here." msgstr "Nur alphabetische Zeichen sind hier erlaubt." -#: .\core\validators.py:139 +#: core/validators.py:139 msgid "Year must be 1900 or later." msgstr "Das Jahr muss 1900 oder später sein." -#: .\core\validators.py:143 +#: core/validators.py:143 #, python-format -msgid "Invalid date: %s." +msgid "Invalid date: %s" msgstr "Ungültiges Datum: %s" -#: .\core\validators.py:147 -#: .\db\models\fields\__init__.py:448 +#: core/validators.py:148 db/models/fields/__init__.py:457 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Bitte ein gültiges Datum im Format JJJJ-MM-TT eingeben." -#: .\core\validators.py:152 +#: core/validators.py:153 msgid "Enter a valid time in HH:MM format." msgstr "Bitte eine gültige Zeit im Format SS:MM eingeben." -#: .\core\validators.py:156 -#: .\db\models\fields\__init__.py:515 +#: core/validators.py:157 db/models/fields/__init__.py:526 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." -msgstr "Bitte eine gültige Datums- und Zeitangabe im Format JJJJ-MM-TT SS:MM eingeben." +msgstr "" +"Bitte eine gültige Datums- und Zeitangabe im Format JJJJ-MM-TT SS:MM " +"eingeben." -#: .\core\validators.py:161 -#: .\newforms\fields.py:269 +#: core/validators.py:162 newforms/fields.py:271 msgid "Enter a valid e-mail address." msgstr "Bitte eine gültige E-Mail-Adresse eingeben." -#: .\core\validators.py:173 -#: .\core\validators.py:442 -#: .\oldforms\__init__.py:667 +#: core/validators.py:174 core/validators.py:445 oldforms/__init__.py:672 msgid "No file was submitted. Check the encoding type on the form." -msgstr "Es wurde keine Datei übermittelt. Eventuell ist das Formular-Encoding falsch." +msgstr "" +"Es wurde keine Datei übermittelt. Eventuell ist das Formular-Encoding falsch." -#: .\core\validators.py:177 -msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image." -msgstr "Bitte ein Bild hochladen. Die hochgeladene Datei ist kein Bild, oder ist defekt." +#: core/validators.py:178 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Bitte ein Bild hochladen. Die hochgeladene Datei ist kein Bild, oder ist " +"defekt." -#: .\core\validators.py:184 +#: core/validators.py:185 #, python-format msgid "The URL %s does not point to a valid image." msgstr "Die URL %s zeigt nicht auf ein gültiges Bild." -#: .\core\validators.py:188 +#: core/validators.py:189 #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." -msgstr "Telefonnummern müssen das Format XXX-XXX-XXXX haben. \"%s\" ist ungültig." +msgstr "" +"Telefonnummern müssen das Format XXX-XXX-XXXX haben. \"%s\" ist ungültig." -#: .\core\validators.py:196 +#: core/validators.py:197 #, python-format msgid "The URL %s does not point to a valid QuickTime video." msgstr "Die URL %s zeigt nicht auf ein gültiges QuickTime-Video." -#: .\core\validators.py:200 +#: core/validators.py:201 msgid "A valid URL is required." msgstr "Eine gültige URL wird hier verlangt." -#: .\core\validators.py:214 +#: core/validators.py:215 #, python-format msgid "" "Valid HTML is required. Specific errors are:\n" @@ -1683,543 +2207,604 @@ msgstr "" "Bitte gültiges HTML eingeben. Fehler sind:\n" "%s" -#: .\core\validators.py:221 +#: core/validators.py:222 #, python-format msgid "Badly formed XML: %s" msgstr "Ungültiges XML: %s" -#: .\core\validators.py:238 +#: core/validators.py:239 #, python-format msgid "Invalid URL: %s" msgstr "Ungültige URL: %s" -#: .\core\validators.py:243 -#: .\core\validators.py:245 +#: core/validators.py:244 core/validators.py:246 #, python-format msgid "The URL %s is a broken link." msgstr "Die URL %s funktioniert nicht." -#: .\core\validators.py:251 +#: core/validators.py:252 msgid "Enter a valid U.S. state abbreviation." msgstr "Bitte eine gültige Abkürzung für einen US-Staat eingeben." -#: .\core\validators.py:265 +#: 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] "Keine Schimpfworte! Das Wort %s ist hier nicht gern gesehen!" msgstr[1] "Keine Schimpfworte! Die Wörter %s sind hier nicht gern gesehen!" -#: .\core\validators.py:272 +#: core/validators.py:273 #, python-format msgid "This field must match the '%s' field." msgstr "Dieses Feld muss zum Feld '%s' passen." -#: .\core\validators.py:291 +#: core/validators.py:292 msgid "Please enter something for at least one field." msgstr "Bitte mindestens eines der Felder ausfüllen." -#: .\core\validators.py:300 -#: .\core\validators.py:311 +#: core/validators.py:301 core/validators.py:312 msgid "Please enter both fields or leave them both empty." msgstr "Bitte entweder beide Felder ausfüllen, oder beide leer lassen." -#: .\core\validators.py:318 +#: core/validators.py:320 #, python-format msgid "This field must be given if %(field)s is %(value)s" -msgstr "Dieses Feld muss gefüllt sein, wenn Feld %(field)s den Wert %(value)s hat." +msgstr "" +"Dieses Feld muss gefüllt sein, wenn Feld %(field)s den Wert %(value)s hat." -#: .\core\validators.py:330 +#: core/validators.py:333 #, python-format msgid "This field must be given if %(field)s is not %(value)s" -msgstr "Dieses Feld muss gefüllt sein, wenn Feld %(field)s nicht %(value)s ist." +msgstr "" +"Dieses Feld muss gefüllt sein, wenn Feld %(field)s nicht %(value)s ist." -#: .\core\validators.py:349 +#: core/validators.py:352 msgid "Duplicate values are not allowed." msgstr "Doppelte Werte sind hier nicht erlaubt." -#: .\core\validators.py:364 +#: core/validators.py:367 #, python-format -msgid "This value must be between %s and %s." -msgstr "Dieser Wert muss zwischen %s und %s sein." +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "Dieser Wert muss zwischen %(lower)s und %(upper)s sein." -#: .\core\validators.py:366 +#: core/validators.py:369 #, python-format msgid "This value must be at least %s." msgstr "Dieser Wert muss mindestens %s sein." -#: .\core\validators.py:368 +#: core/validators.py:371 #, python-format msgid "This value must be no more than %s." msgstr "Dieser Wert darf maximal %s sein." -#: .\core\validators.py:404 +#: core/validators.py:407 #, python-format msgid "This value must be a power of %s." msgstr "Dieser Wert muss eine Potenz von %s sein." -#: .\core\validators.py:415 +#: core/validators.py:418 msgid "Please enter a valid decimal number." msgstr "Bitte eine gültige Dezimalzahl eingeben." -#: .\core\validators.py:419 +#: 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] "Bitte eine gültige Dezimalzahl mit maximal %s Ziffer eingeben." msgstr[1] "Bitte eine gültige Dezimalzahl mit maximal %s Ziffern eingeben." -#: .\core\validators.py:422 +#: 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] "Bitte eine gültige Dezimalzahl mit einer Gesamtzahl von maximal %s Ziffer eingeben." -msgstr[1] "Bitte eine gültige Dezimalzahl mit einer Gesamtzahl von maximal %s Ziffern eingeben." +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] "" +"Bitte eine gültige Dezimalzahl mit einer Gesamtzahl von maximal %s Ziffer " +"eingeben." +msgstr[1] "" +"Bitte eine gültige Dezimalzahl mit einer Gesamtzahl von maximal %s Ziffern " +"eingeben." -#: .\core\validators.py:425 +#: 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] "Bitte eine gültige Dezimalzahl mit maximal %s Dezimalstelle eingeben." -msgstr[1] "Bitte eine gültige Dezimalzahl mit maximal %s Dezimalstellen eingeben." +msgid_plural "" +"Please enter a valid decimal number with at most %s decimal places." +msgstr[0] "" +"Bitte eine gültige Dezimalzahl mit maximal %s Dezimalstelle eingeben." +msgstr[1] "" +"Bitte eine gültige Dezimalzahl mit maximal %s Dezimalstellen eingeben." -#: .\core\validators.py:435 +#: core/validators.py:438 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." -msgstr "Bitte sicherstellen, dass die hochgeladene Datei mindestens %s Bytes groß ist." +msgstr "" +"Bitte sicherstellen, dass die hochgeladene Datei mindestens %s Bytes groß " +"ist." -#: .\core\validators.py:436 +#: core/validators.py:439 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." -msgstr "Bitte sicherstellen, dass die hochgeladene Datei maximal %s Bytes groß ist." +msgstr "" +"Bitte sicherstellen, dass die hochgeladene Datei maximal %s Bytes groß ist." -#: .\core\validators.py:453 +#: core/validators.py:456 msgid "The format for this field is wrong." msgstr "Das Format für dieses Feld ist falsch." -#: .\core\validators.py:468 +#: core/validators.py:471 msgid "This field is invalid." msgstr "Dieses Feld ist ungültig." -#: .\core\validators.py:504 +#: core/validators.py:507 #, python-format msgid "Could not retrieve anything from %s." msgstr "Konnte nichts von %s empfangen." -#: .\core\validators.py:507 +#: 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 "Die URL %(url)s lieferte den falschen Content-Type '%(contenttype)s'." -#: .\core\validators.py:540 +#: core/validators.py:543 #, python-format -msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)" -msgstr "Bitte das ungeschlossene %(tag)s Tag in Zeile %(line)s schließen. Die Zeile beginnt mit \"%(start)s\"." +msgid "" +"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " +"\"%(start)s\".)" +msgstr "" +"Bitte das ungeschlossene %(tag)s Tag in Zeile %(line)s schließen. Die Zeile " +"beginnt mit \"%(start)s\"." -#: .\core\validators.py:544 +#: 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 "In Zeile %(line)s ist Text, der nicht in dem Kontext erlaubt ist. Die Zeile beginnt mit \"%(start)s\"." +msgid "" +"Some text starting on line %(line)s is not allowed in that context. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"In Zeile %(line)s ist Text, der nicht in dem Kontext erlaubt ist. Die Zeile " +"beginnt mit \"%(start)s\"." -#: .\core\validators.py:549 +#: core/validators.py:552 #, python-format -msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)" -msgstr "Das Attribute %(attr)s in Zeile %(line)s ist ungültig. Die Zeile beginnt mit \"%(start)s\"." +msgid "" +"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"Das Attribute %(attr)s in Zeile %(line)s ist ungültig. Die Zeile beginnt mit " +"\"%(start)s\"." -#: .\core\validators.py:554 +#: 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> in Zeile %(line)s ist ungültig. Die Zeile beginnt mit \"%(start)s\"." +msgid "" +"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"<%(tag)s> in Zeile %(line)s ist ungültig. Die Zeile beginnt mit \"%(start)s" +"\"." -#: .\core\validators.py:558 +#: 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 "Ein Tag in Zeile %(line)s hat eines oder mehrere Pflichtattribute nicht. Die Zeile beginnt mit \"%(start)s\"." +msgid "" +"A tag on line %(line)s is missing one or more required attributes. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Ein Tag in Zeile %(line)s hat eines oder mehrere Pflichtattribute nicht. Die " +"Zeile beginnt mit \"%(start)s\"." -#: .\core\validators.py:563 +#: 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 "Das Attribut %(attr)s in Zeile %(line)s hat einen ungültigen Wert. Die Zeile beginnt mit \"%(start)s\"." +msgid "" +"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Das Attribut %(attr)s in Zeile %(line)s hat einen ungültigen Wert. Die Zeile " +"beginnt mit \"%(start)s\"." -#: .\db\models\manipulators.py:305 +#: db/models/manipulators.py:307 #, python-format msgid "%(object)s with this %(type)s already exists for the given %(field)s." -msgstr "Ein '%(object)s' in dieser '%(type)s' existiert bereits für dieses '%(field)s'." +msgstr "" +"Ein '%(object)s' in dieser '%(type)s' existiert bereits für dieses '%(field)" +"s'." -#: .\db\models\fields\related.py:53 -#, python-format -msgid "Please enter a valid %s." -msgstr "Bitte ein gültiges '%s' eingeben." - -#: .\db\models\fields\related.py:642 -msgid "Separate multiple IDs with commas." -msgstr "Mehrere IDs können mit Komma getrennt werden." - -#: .\db\models\fields\related.py:644 -msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr "Um mehr als eine Selektion zu treffen, \"Strg\", oder auf dem Mac \"Command\", beim Klicken gedrückt halten." - -#: .\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] "Bitte gültige IDs für %(self)s eingeben. Der Wert %(value)r ist ungültig." -msgstr[1] "Bitte gültige IDs für %(self)s eingeben. Die Werte %(value)r sind ungültig." - -#: .\db\models\fields\__init__.py:42 +#: db/models/fields/__init__.py:42 #, python-format msgid "%(optname)s with this %(fieldname)s already exists." msgstr "Ein '%(optname)s' mit diesem '%(fieldname)s' existiert bereits." -#: .\db\models\fields\__init__.py:116 -#: .\db\models\fields\__init__.py:267 -#: .\db\models\fields\__init__.py:599 -#: .\db\models\fields\__init__.py:610 -#: .\newforms\fields.py:78 -#: .\newforms\fields.py:373 -#: .\newforms\fields.py:449 -#: .\newforms\fields.py:460 -#: .\oldforms\__init__.py:352 +#: db/models/fields/__init__.py:117 db/models/fields/__init__.py:274 +#: db/models/fields/__init__.py:610 db/models/fields/__init__.py:621 +#: newforms/fields.py:80 newforms/fields.py:376 newforms/fields.py:452 +#: newforms/fields.py:463 newforms/models.py:178 oldforms/__init__.py:357 msgid "This field is required." msgstr "Dieses Feld ist zwingend erforderlich." -#: .\db\models\fields\__init__.py:360 +#: db/models/fields/__init__.py:367 msgid "This value must be an integer." msgstr "Dieser Wert muss eine Ganzzahl sein." -#: .\db\models\fields\__init__.py:395 +#: db/models/fields/__init__.py:402 msgid "This value must be either True or False." msgstr "Dieser Wert muss wahr oder falsch sein." -#: .\db\models\fields\__init__.py:416 +#: db/models/fields/__init__.py:423 msgid "This field cannot be null." msgstr "Dieses Feld darf nicht leer sein." -#: .\db\models\fields\__init__.py:619 +#: db/models/fields/__init__.py:630 msgid "Enter a valid filename." msgstr "Bitte einen gültigen Dateinamen eingeben." -#: .\newforms\fields.py:101 -#: .\newforms\fields.py:254 +#: db/models/fields/__init__.py:751 +msgid "This value must be either None, True or False." +msgstr "Dieser Wert muss None, True oder False sein." + +#: db/models/fields/related.py:53 +#, python-format +msgid "Please enter a valid %s." +msgstr "Bitte ein gültiges '%s' eingeben." + +#: db/models/fields/related.py:642 +msgid "Separate multiple IDs with commas." +msgstr "Mehrere IDs können mit Komma getrennt werden." + +#: db/models/fields/related.py:644 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" +"Um mehr als eine Selektion zu treffen, \"Strg\", oder auf dem Mac \"Command" +"\", beim Klicken gedrückt halten." + +#: 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] "" +"Bitte gültige IDs für %(self)s eingeben. Der Wert %(value)r ist ungültig." +msgstr[1] "" +"Bitte gültige IDs für %(self)s eingeben. Die Werte %(value)r sind ungültig." + +#: newforms/fields.py:103 newforms/fields.py:256 #, python-format msgid "Ensure this value has at most %d characters." msgstr "Bitte sicherstellen, dass der Text maximal %d Zeichen hat." -#: .\newforms\fields.py:103 -#: .\newforms\fields.py:256 +#: newforms/fields.py:105 newforms/fields.py:258 #, python-format msgid "Ensure this value has at least %d characters." msgstr "Bitte sicherstellen, dass der Text wenigstens %d Zeichen hat." -#: .\newforms\fields.py:128 +#: newforms/fields.py:130 #, python-format msgid "Ensure this value is less than or equal to %s." msgstr "Dieser Wert darf maximal %s sein." -#: .\newforms\fields.py:130 +#: newforms/fields.py:132 #, python-format msgid "Ensure this value is greater than or equal to %s." msgstr "Dieser Wert muss größer oder gleich %s sein." -#: .\newforms\fields.py:163 +#: newforms/fields.py:165 msgid "Enter a valid date." msgstr "Bitte ein gültiges Datum eingeben." -#: .\newforms\fields.py:190 +#: newforms/fields.py:192 msgid "Enter a valid time." msgstr "Bitte eine gültige Uhrzeit eingeben." -#: .\newforms\fields.py:226 +#: newforms/fields.py:228 msgid "Enter a valid date/time." msgstr "Bitte gültiges Datum und Uhrzeit eingeben." -#: .\newforms\fields.py:240 +#: newforms/fields.py:242 msgid "Enter a valid value." msgstr "Bitte einen gültigen Wert eingeben." -#: .\newforms\fields.py:287 -#: .\newforms\fields.py:309 +#: newforms/fields.py:289 newforms/fields.py:311 msgid "Enter a valid URL." msgstr "Bitte eine gültige Adresse eingeben." -#: .\newforms\fields.py:311 +#: newforms/fields.py:313 msgid "This URL appears to be a broken link." msgstr "Diese Adresse scheint nicht gültig zu sein." -#: .\newforms\fields.py:359 -#: .\newforms\fields.py:386 +#: newforms/fields.py:362 newforms/models.py:165 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "Bitte eine gültige Auswahl treffen." + +#: newforms/fields.py:380 newforms/fields.py:456 newforms/models.py:182 +msgid "Enter a list of values." +msgstr "Eine Liste mit Werten eingeben." + +#: newforms/fields.py:389 newforms/models.py:188 #, python-format msgid "Select a valid choice. %s is not one of the available choices." msgstr "Bitte eine gültige Auswahl treffen. %s ist keine gültige Auswahl." -#: .\newforms\fields.py:377 -#: .\newforms\fields.py:453 -msgid "Enter a list of values." -msgstr "Eine Liste mit Werten eingeben." - -#: .\oldforms\__init__.py:387 +#: 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] "Bitte sicherstellen, dass der Text weniger als %s Zeichen hat." msgstr[1] "Bitte sicherstellen, dass der Text weniger als %s Zeichen hat." -#: .\oldforms\__init__.py:392 +#: oldforms/__init__.py:397 msgid "Line breaks are not allowed here." msgstr "Zeilenumbrüche sind hier nicht erlaubt." -#: .\oldforms\__init__.py:493 -#: .\oldforms\__init__.py:566 -#: .\oldforms\__init__.py:605 +#: 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 "Bitte eine gültige Auswahl treffen; '%(data)s' ist nicht in %(choices)s." +msgstr "" +"Bitte eine gültige Auswahl treffen; '%(data)s' ist nicht in %(choices)s." -#: .\oldforms\__init__.py:669 +#: oldforms/__init__.py:674 msgid "The submitted file is empty." msgstr "Die ausgewählte Datei ist leer." -#: .\oldforms\__init__.py:725 +#: oldforms/__init__.py:730 msgid "Enter a whole number between -32,768 and 32,767." msgstr "Bitte eine Ganzzahl zwischen -32.768 und 32.767 eingeben." -#: .\oldforms\__init__.py:735 +#: oldforms/__init__.py:740 msgid "Enter a positive number." msgstr "Bitte eine ganze, positive Zahl eingeben." -#: .\oldforms\__init__.py:745 +#: oldforms/__init__.py:750 msgid "Enter a whole number between 0 and 32,767." msgstr "Bitte eine ganze Zahl zwischen 0 und 32.767 eingeben." -#: .\template\defaultfilters.py:419 +#: template/defaultfilters.py:491 msgid "yes,no,maybe" msgstr "Ja,Nein,Vielleicht" -#: .\utils\dates.py:6 +#: utils/dateformat.py:40 +msgid "p.m." +msgstr "nachm." + +#: utils/dateformat.py:41 +msgid "a.m." +msgstr "vorm." + +#: utils/dateformat.py:46 +msgid "PM" +msgstr "nachm." + +#: utils/dateformat.py:47 +msgid "AM" +msgstr "vorm." + +#: utils/dateformat.py:95 +msgid "midnight" +msgstr "Mitternacht" + +#: utils/dateformat.py:97 +msgid "noon" +msgstr "Mittag" + +#: utils/dates.py:6 msgid "Monday" msgstr "Montag" -#: .\utils\dates.py:6 +#: utils/dates.py:6 msgid "Tuesday" msgstr "Dienstag" -#: .\utils\dates.py:6 +#: utils/dates.py:6 msgid "Wednesday" msgstr "Mittwoch" -#: .\utils\dates.py:6 +#: utils/dates.py:6 msgid "Thursday" msgstr "Donnerstag" -#: .\utils\dates.py:6 +#: utils/dates.py:6 msgid "Friday" msgstr "Freitag" -#: .\utils\dates.py:7 +#: utils/dates.py:7 msgid "Saturday" msgstr "Samstag" -#: .\utils\dates.py:7 +#: utils/dates.py:7 msgid "Sunday" msgstr "Sonntag" -#: .\utils\dates.py:14 +#: utils/dates.py:14 msgid "January" msgstr "Januar" -#: .\utils\dates.py:14 +#: utils/dates.py:14 msgid "February" msgstr "Februar" -#: .\utils\dates.py:14 -#: .\utils\dates.py:27 +#: utils/dates.py:14 utils/dates.py:27 msgid "March" msgstr "März" -#: .\utils\dates.py:14 -#: .\utils\dates.py:27 +#: utils/dates.py:14 utils/dates.py:27 msgid "April" msgstr "April" -#: .\utils\dates.py:14 -#: .\utils\dates.py:27 +#: utils/dates.py:14 utils/dates.py:27 msgid "May" msgstr "Mai" -#: .\utils\dates.py:14 -#: .\utils\dates.py:27 +#: utils/dates.py:14 utils/dates.py:27 msgid "June" msgstr "Juni" -#: .\utils\dates.py:15 -#: .\utils\dates.py:27 +#: utils/dates.py:15 utils/dates.py:27 msgid "July" msgstr "Juli" -#: .\utils\dates.py:15 +#: utils/dates.py:15 msgid "August" msgstr "August" -#: .\utils\dates.py:15 +#: utils/dates.py:15 msgid "September" msgstr "September" -#: .\utils\dates.py:15 +#: utils/dates.py:15 msgid "October" msgstr "Oktober" -#: .\utils\dates.py:15 +#: utils/dates.py:15 msgid "November" msgstr "November" -#: .\utils\dates.py:16 +#: utils/dates.py:16 msgid "December" msgstr "Dezember" -#: .\utils\dates.py:19 +#: utils/dates.py:19 msgid "jan" msgstr "Jan" -#: .\utils\dates.py:19 +#: utils/dates.py:19 msgid "feb" msgstr "Feb" -#: .\utils\dates.py:19 +#: utils/dates.py:19 msgid "mar" msgstr "Mär" -#: .\utils\dates.py:19 +#: utils/dates.py:19 msgid "apr" msgstr "Apr" -#: .\utils\dates.py:19 +#: utils/dates.py:19 msgid "may" msgstr "Mai" -#: .\utils\dates.py:19 +#: utils/dates.py:19 msgid "jun" msgstr "Jun" -#: .\utils\dates.py:20 +#: utils/dates.py:20 msgid "jul" msgstr "Jul" -#: .\utils\dates.py:20 +#: utils/dates.py:20 msgid "aug" msgstr "Aug" -#: .\utils\dates.py:20 +#: utils/dates.py:20 msgid "sep" msgstr "Sep" -#: .\utils\dates.py:20 +#: utils/dates.py:20 msgid "oct" msgstr "Okt" -#: .\utils\dates.py:20 +#: utils/dates.py:20 msgid "nov" msgstr "Nov" -#: .\utils\dates.py:20 +#: utils/dates.py:20 msgid "dec" msgstr "Dez" -#: .\utils\dates.py:27 +#: utils/dates.py:27 msgid "Jan." msgstr "Jan." -#: .\utils\dates.py:27 +#: utils/dates.py:27 msgid "Feb." msgstr "Feb." -#: .\utils\dates.py:28 +#: utils/dates.py:28 msgid "Aug." msgstr "Aug." -#: .\utils\dates.py:28 +#: utils/dates.py:28 msgid "Sept." msgstr "Sept." -#: .\utils\dates.py:28 +#: utils/dates.py:28 msgid "Oct." msgstr "Okt." -#: .\utils\dates.py:28 +#: utils/dates.py:28 msgid "Nov." msgstr "Nov." -#: .\utils\dates.py:28 +#: utils/dates.py:28 msgid "Dec." msgstr "Dez." -#: .\utils\timesince.py:12 +#: utils/timesince.py:12 msgid "year" msgid_plural "years" msgstr[0] "Jahr" msgstr[1] "Jahre" -#: .\utils\timesince.py:13 +#: utils/timesince.py:13 msgid "month" msgid_plural "months" msgstr[0] "Monat" msgstr[1] "Monate" -#: .\utils\timesince.py:14 +#: utils/timesince.py:14 msgid "week" msgid_plural "weeks" msgstr[0] "Woche" msgstr[1] "Wochen" -#: .\utils\timesince.py:15 +#: utils/timesince.py:15 msgid "day" msgid_plural "days" msgstr[0] "Tag" msgstr[1] "Tage" -#: .\utils\timesince.py:16 +#: utils/timesince.py:16 msgid "hour" msgid_plural "hours" msgstr[0] "Stunde" msgstr[1] "Stunden" -#: .\utils\timesince.py:17 +#: utils/timesince.py:17 msgid "minute" msgid_plural "minutes" msgstr[0] "Minute" msgstr[1] "Minuten" -#: .\utils\translation\trans_real.py:362 +#: utils/translation/trans_real.py:358 msgid "DATE_FORMAT" msgstr "j. N Y" -#: .\utils\translation\trans_real.py:363 +#: utils/translation/trans_real.py:359 msgid "DATETIME_FORMAT" msgstr "j. N Y, H:i" -#: .\utils\translation\trans_real.py:364 +#: utils/translation/trans_real.py:360 msgid "TIME_FORMAT" msgstr "H:i" -#: .\utils\translation\trans_real.py:380 +#: utils/translation/trans_real.py:376 msgid "YEAR_MONTH_FORMAT" msgstr "F Y" -#: .\utils\translation\trans_real.py:381 +#: utils/translation/trans_real.py:377 msgid "MONTH_DAY_FORMAT" msgstr "j. F" -#: .\views\generic\create_update.py:43 +#: views/generic/create_update.py:43 #, python-format msgid "The %(verbose_name)s was created successfully." msgstr "%(verbose_name)s wurde erfolgreich angelegt." -#: .\views\generic\create_update.py:117 +#: views/generic/create_update.py:117 #, python-format msgid "The %(verbose_name)s was updated successfully." msgstr "%(verbose_name)s wurde erfolgreich aktualisiert." -#: .\views\generic\create_update.py:184 +#: views/generic/create_update.py:184 #, python-format msgid "The %(verbose_name)s was deleted." msgstr "%(verbose_name)s wurde gelöscht" - diff --git a/django/conf/locale/el/LC_MESSAGES/django.mo b/django/conf/locale/el/LC_MESSAGES/django.mo index 4a7d8e41f0..a048d87976 100644 Binary files a/django/conf/locale/el/LC_MESSAGES/django.mo and b/django/conf/locale/el/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/el/LC_MESSAGES/django.po b/django/conf/locale/el/LC_MESSAGES/django.po index 06099eb9da..d041a275e5 100644 --- a/django/conf/locale/el/LC_MESSAGES/django.po +++ b/django/conf/locale/el/LC_MESSAGES/django.po @@ -10,7 +10,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-05-16 10:13+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: panos laganakos \n" +"Last-Translator: Orestis Markou \n" "Language-Team: Greek\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" @@ -164,9 +164,9 @@ msgid "" "\n" "%(text)s" msgstr "" -"Αυτο το σχόλιο σημειώθηκε απο %(χρήστη)ες\n" +"Αυτο το σχόλιο σημειώθηκε απο %(user)s\n" "\n" -"%(κείμενο)α" +"%(text)s" #: contrib/comments/models.py:265 msgid "flag date" diff --git a/django/conf/locale/es/LC_MESSAGES/django.mo b/django/conf/locale/es/LC_MESSAGES/django.mo index e9105aa64c..b8b9185b6d 100644 Binary files a/django/conf/locale/es/LC_MESSAGES/django.mo and b/django/conf/locale/es/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/es/LC_MESSAGES/django.po b/django/conf/locale/es/LC_MESSAGES/django.po index d8166e6201..6b55435a12 100644 --- a/django/conf/locale/es/LC_MESSAGES/django.po +++ b/django/conf/locale/es/LC_MESSAGES/django.po @@ -305,7 +305,7 @@ msgstr "Japon #: conf/global_settings.py:58 msgid "Latvian" -msgstr "" +msgstr "Latvio" #: conf/global_settings.py:59 msgid "Macedonian" @@ -611,7 +611,7 @@ msgstr "La URL %s no apunta a una imagen v #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." msgstr "" -"Los nmeros de telfono deben guardar el formato XXX-XXX-XXXX format. \"%s\" " +"Los nmeros de telfono deben guardar el formato XXX-XXX-XXXX. \"%s\" " "no es vlido." #: core/validators.py:196 @@ -726,10 +726,10 @@ msgid "Please enter a valid decimal number with a whole part of at most %s digit msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits." msgstr[0] "" "Por favor, introduzca un nmero decimal vlido con a lo ms %s dgito en " -"total." +"su parte entera." msgstr[1] "" "Por favor, introduzca un nmero decimal vlido con a lo ms %s dgitos en " -"total." +"su parte entera." #: core/validators.py:426 #, python-format @@ -958,7 +958,7 @@ msgid "" "digits and underscores)." msgstr "" "Requerido. 30 caracteres o menos. Slo caracteres alfanumricos (letras, " -"dgutos y guiones bajos)." +"dgitos y guiones bajos)." #: contrib/auth/models.py:91 msgid "first name" @@ -1107,7 +1107,7 @@ msgstr "Las contrase #: contrib/auth/forms.py:124 msgid "Your old password was entered incorrectly. Please enter it again." msgstr "" -"Tu contrasea antgua es incorrecta. Por favor, vuelve a introducirla " +"Tu contrasea antigua es incorrecta. Por favor, vuelve a introducirla " "correctamente." #: contrib/comments/models.py:67 contrib/comments/models.py:166 @@ -1707,7 +1707,7 @@ msgid "" msgstr "" "Ha ocurrido un error. Se ha informado a los administradores del sitio " "mediante correo electrnico y debera arreglarse en breve. Gracias por su " -"paciencia" +"paciencia." #: contrib/admin/templates/admin/search_form.html:8 msgid "Go" @@ -1899,7 +1899,7 @@ msgid "" "the appropriate user." msgstr "" "Algo va mal con la instalacin de la base de datos. Asegrate que las tablas " -"necesarias han sido creadas, y que la base de datos puede ser leida por el " +"necesarias han sido creadas, y que la base de datos puede ser leda por el " "usuario apropiado." #: contrib/admin/templates/admin/filter.html:2 @@ -1912,7 +1912,7 @@ msgid "" "First, enter a username and password. Then, you'll be able to edit more user " "options." msgstr "" -"Primero, introduzca un nombre de usuario y una contrasea. Luego, podr " +"Primero introduzca un nombre de usuario y una contrasea. Luego podr " "editar el resto de opciones del usuario." #: contrib/admin/templates/admin/auth/user/add_form.html:12 @@ -2105,7 +2105,7 @@ msgstr "vista:" #: contrib/admin/views/doc.py:164 #, python-format msgid "App %r not found" -msgstr "Applicacin %r no encontrada" +msgstr "Aplicacin %r no encontrada" #: contrib/admin/views/doc.py:171 #, python-format @@ -2326,12 +2326,12 @@ msgstr "Cambiar clave: %s" #: contrib/localflavor/usa/forms.py:17 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." -msgstr "Introduzca un cdigo zip en el formato XXXXX o XXXX-XXXX." +msgstr "Introduzca un cdigo postal en el formato XXXXX o XXXX-XXXX." #: contrib/localflavor/uk/forms.py:18 msgid "Enter a postcode. A space is required between the two postcode parts." msgstr "" -"Introduzca in cdigo postal. Se necesita un espacio entre las dos partes del " +"Introduzca un cdigo postal. Se necesita un espacio entre las dos partes del " "cdigo." #: contrib/sessions/models.py:51 diff --git a/django/conf/locale/fr/LC_MESSAGES/django.mo b/django/conf/locale/fr/LC_MESSAGES/django.mo index 7250343b45..b96306cabd 100644 Binary files a/django/conf/locale/fr/LC_MESSAGES/django.mo and b/django/conf/locale/fr/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/fr/LC_MESSAGES/django.po b/django/conf/locale/fr/LC_MESSAGES/django.po index 14fc0083b8..2e525466b1 100644 --- a/django/conf/locale/fr/LC_MESSAGES/django.po +++ b/django/conf/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-03-11 11:46+0100\n" +"POT-Creation-Date: 2007-04-22 09:06+0200\n" "PO-Revision-Date: 2006-05-08 15:12+0200\n" "Last-Translator: Baptiste Goupil \n" "Language-Team: français \n" @@ -15,11 +15,11 @@ msgstr "" "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 +#: oldforms/__init__.py:357 db/models/fields/__init__.py:114 +#: db/models/fields/__init__.py:271 db/models/fields/__init__.py:607 +#: db/models/fields/__init__.py:618 newforms/models.py:178 +#: newforms/fields.py:80 newforms/fields.py:376 newforms/fields.py:452 +#: newforms/fields.py:463 msgid "This field is required." msgstr "Ce champ est obligatoire." @@ -39,17 +39,17 @@ msgstr "Les retours à la ligne ne sont pas autorisés ici." 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 +#: oldforms/__init__.py:577 newforms/widgets.py:180 #: contrib/admin/filterspecs.py:150 msgid "Unknown" msgstr "Inconnu" -#: oldforms/__init__.py:577 newforms/widgets.py:170 +#: oldforms/__init__.py:577 newforms/widgets.py:180 #: contrib/admin/filterspecs.py:143 msgid "Yes" msgstr "Oui" -#: oldforms/__init__.py:577 newforms/widgets.py:170 +#: oldforms/__init__.py:577 newforms/widgets.py:180 #: contrib/admin/filterspecs.py:143 msgid "No" msgstr "Non" @@ -74,62 +74,61 @@ msgstr "Entrez un nombre entier positif." 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 +#: db/models/manipulators.py:302 #, 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 +#: db/models/manipulators.py:303 msgid "and" msgstr "et" -#: db/models/fields/__init__.py:42 +#: db/models/fields/__init__.py:41 #, 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 +#: db/models/fields/__init__.py:364 msgid "This value must be an integer." msgstr "Cette valeur doit être un entier." -#: db/models/fields/__init__.py:401 +#: db/models/fields/__init__.py:399 msgid "This value must be either True or False." msgstr "Cette valeur doit être soit Vraie soit Fausse." -#: db/models/fields/__init__.py:422 +#: db/models/fields/__init__.py:420 msgid "This field cannot be null." msgstr "Ce champ ne peut pas être vide." -#: db/models/fields/__init__.py:456 core/validators.py:148 +#: db/models/fields/__init__.py:454 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 +#: db/models/fields/__init__.py:523 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 +#: db/models/fields/__init__.py:627 msgid "Enter a valid filename." msgstr "Entrez un nom de fichier valide." +#: db/models/fields/__init__.py:748 +msgid "This value must be either None, True or False." +msgstr "Cette valeur doit être Nulle, Vraie ou Fausse." + #: 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 +#: db/models/fields/related.py:624 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 +#: db/models/fields/related.py:668 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." msgid_plural "" @@ -239,54 +238,58 @@ msgid "Polish" msgstr "Polonais" #: conf/global_settings.py:64 +msgid "Portugese" +msgstr "" + +#: conf/global_settings.py:65 msgid "Brazilian" msgstr "Brésilien" -#: conf/global_settings.py:65 +#: conf/global_settings.py:66 msgid "Romanian" msgstr "Roumain" -#: conf/global_settings.py:66 +#: conf/global_settings.py:67 msgid "Russian" msgstr "Russe" -#: conf/global_settings.py:67 +#: conf/global_settings.py:68 msgid "Slovak" msgstr "Slovaque" -#: conf/global_settings.py:68 +#: conf/global_settings.py:69 msgid "Slovenian" msgstr "Slovaque" -#: conf/global_settings.py:69 +#: conf/global_settings.py:70 msgid "Serbian" msgstr "Serbe" -#: conf/global_settings.py:70 +#: conf/global_settings.py:71 msgid "Swedish" msgstr "Suédois" -#: conf/global_settings.py:71 +#: conf/global_settings.py:72 msgid "Tamil" msgstr "Tamoul" -#: conf/global_settings.py:72 +#: conf/global_settings.py:73 msgid "Telugu" msgstr "Télougou" -#: conf/global_settings.py:73 +#: conf/global_settings.py:74 msgid "Turkish" msgstr "Turc" -#: conf/global_settings.py:74 +#: conf/global_settings.py:75 msgid "Ukrainian" msgstr "Ukrainien" -#: conf/global_settings.py:75 +#: conf/global_settings.py:76 msgid "Simplified Chinese" msgstr "Chinois simplifié" -#: conf/global_settings.py:76 +#: conf/global_settings.py:77 msgid "Traditional Chinese" msgstr "Chinois traditionnel" @@ -342,7 +345,7 @@ msgstr "Les caractères non numériques ne sont pas autorisés ici." 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 +#: core/validators.py:120 newforms/fields.py:128 msgid "Enter a whole number." msgstr "Entrez un nombre entier." @@ -355,15 +358,15 @@ msgid "Year must be 1900 or later." msgstr "L'année doit être supérieure à 1900." #: core/validators.py:143 -#, fuzzy, python-format +#, python-format msgid "Invalid date: %s" -msgstr "URL invalide : %s" +msgstr "Date invalide&nbsp;: %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 +#: core/validators.py:162 newforms/fields.py:271 msgid "Enter a valid e-mail address." msgstr "Entrez une adresse de courriel valide." @@ -402,18 +405,18 @@ msgid "" "Valid HTML is required. Specific errors are:\n" "%s" msgstr "" -"Du HTML valide est requis. Les erreurs sont les suivantes :\n" +"Du HTML valide est requis. Les erreurs sont les suivantes&nbsp;:\n" "%s" #: core/validators.py:222 #, python-format msgid "Badly formed XML: %s" -msgstr "XML mal formé : %s" +msgstr "XML mal formé&nbsp;: %s" #: core/validators.py:239 #, python-format msgid "Invalid URL: %s" -msgstr "URL invalide : %s" +msgstr "URL invalide&nbsp;: %s" #: core/validators.py:244 core/validators.py:246 #, python-format @@ -460,17 +463,17 @@ msgid "Duplicate values are not allowed." msgstr "Des valeurs identiques ne sont pas autorisées." #: core/validators.py:367 -#, fuzzy, python-format +#, python-format msgid "This value must be between %(lower)s and %(upper)s." -msgstr "Cette valeur doit être entre %(lower)s et %(upper)s." +msgstr "Cette valeur doit être comprise entre %(lower)s et %(upper)s." #: core/validators.py:369 -#, fuzzy, python-format +#, 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 +#, python-format msgid "This value must be no more than %s." msgstr "Cette valeur ne doit pas dépasser %s." @@ -612,135 +615,135 @@ msgstr "L'objet %(verbose_name)s a été mis à jour avec succès." msgid "The %(verbose_name)s was deleted." msgstr "L'objet %(verbose_name)s a été supprimé." -#: newforms/models.py:164 newforms/fields.py:360 +#: newforms/models.py:165 newforms/fields.py:362 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 +#: newforms/models.py:182 newforms/fields.py:380 newforms/fields.py:456 msgid "Enter a list of values." msgstr "Entrez une liste de valeur." -#: newforms/models.py:187 newforms/fields.py:387 +#: newforms/models.py:188 newforms/fields.py:389 #, 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 +#: newforms/fields.py:103 newforms/fields.py:256 #, 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 +#: newforms/fields.py:105 newforms/fields.py:258 #, 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 +#: newforms/fields.py:130 #, 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 +#: newforms/fields.py:132 #, 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 +#: newforms/fields.py:165 msgid "Enter a valid date." msgstr "Entrez une date valide." -#: newforms/fields.py:190 +#: newforms/fields.py:192 msgid "Enter a valid time." msgstr "Entrez une heure valide." -#: newforms/fields.py:226 +#: newforms/fields.py:228 msgid "Enter a valid date/time." msgstr "Entrez une date et une heure valides." -#: newforms/fields.py:240 +#: newforms/fields.py:242 msgid "Enter a valid value." msgstr "Entrez une valeur valide." -#: newforms/fields.py:287 newforms/fields.py:309 +#: newforms/fields.py:289 newforms/fields.py:311 msgid "Enter a valid URL." msgstr "Entrez une URL valide." -#: newforms/fields.py:311 +#: newforms/fields.py:313 msgid "This URL appears to be a broken link." msgstr "L'URL est un lien cassé." -#: contrib/humanize/templatetags/humanize.py:16 +#: contrib/humanize/templatetags/humanize.py:17 msgid "th" msgstr "e" -#: contrib/humanize/templatetags/humanize.py:16 +#: contrib/humanize/templatetags/humanize.py:17 msgid "st" msgstr "er" -#: contrib/humanize/templatetags/humanize.py:16 +#: contrib/humanize/templatetags/humanize.py:17 msgid "nd" msgstr "d" -#: contrib/humanize/templatetags/humanize.py:16 +#: contrib/humanize/templatetags/humanize.py:17 msgid "rd" msgstr "e" -#: contrib/humanize/templatetags/humanize.py:48 +#: contrib/humanize/templatetags/humanize.py:47 #, 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 +#: contrib/humanize/templatetags/humanize.py:50 #, 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 +#: contrib/humanize/templatetags/humanize.py:53 #, 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 +#: contrib/humanize/templatetags/humanize.py:68 msgid "one" msgstr "un" -#: contrib/humanize/templatetags/humanize.py:69 +#: contrib/humanize/templatetags/humanize.py:68 msgid "two" msgstr "deux" -#: contrib/humanize/templatetags/humanize.py:69 +#: contrib/humanize/templatetags/humanize.py:68 msgid "three" msgstr "trois" -#: contrib/humanize/templatetags/humanize.py:69 +#: contrib/humanize/templatetags/humanize.py:68 msgid "four" msgstr "quatre" -#: contrib/humanize/templatetags/humanize.py:69 +#: contrib/humanize/templatetags/humanize.py:68 msgid "five" msgstr "cinq" -#: contrib/humanize/templatetags/humanize.py:69 +#: contrib/humanize/templatetags/humanize.py:68 msgid "six" msgstr "six" -#: contrib/humanize/templatetags/humanize.py:69 +#: contrib/humanize/templatetags/humanize.py:68 msgid "seven" msgstr "sept" -#: contrib/humanize/templatetags/humanize.py:69 +#: contrib/humanize/templatetags/humanize.py:68 msgid "eight" msgstr "huit" -#: contrib/humanize/templatetags/humanize.py:69 +#: contrib/humanize/templatetags/humanize.py:68 msgid "nine" msgstr "neuf" @@ -776,7 +779,7 @@ msgstr "redirige" msgid "redirects" msgstr "redirige" -#: contrib/comments/models.py:67 contrib/comments/models.py:166 +#: contrib/comments/models.py:67 contrib/comments/models.py:156 msgid "object ID" msgstr "ID de l'objet" @@ -784,8 +787,8 @@ msgstr "ID de l'objet" msgid "headline" msgstr "titre" -#: contrib/comments/models.py:69 contrib/comments/models.py:90 -#: contrib/comments/models.py:167 +#: contrib/comments/models.py:69 contrib/comments/models.py:91 +#: contrib/comments/models.py:157 msgid "comment" msgstr "commentaire" @@ -825,15 +828,15 @@ msgstr "vote n°8" msgid "is valid rating" msgstr "est un vote valide" -#: contrib/comments/models.py:83 contrib/comments/models.py:169 +#: contrib/comments/models.py:83 contrib/comments/models.py:159 msgid "date/time submitted" msgstr "date et heure soumises" -#: contrib/comments/models.py:84 contrib/comments/models.py:170 +#: contrib/comments/models.py:84 contrib/comments/models.py:160 msgid "is public" msgstr "est public" -#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304 +#: contrib/comments/models.py:85 contrib/admindocs/views.py:304 msgid "IP address" msgstr "adresse IP" @@ -849,15 +852,15 @@ msgstr "" "Cochez cette case si le commentaire est inadéquat. Un message type \"Ce " "commentaire a été supprimé\" sera affiché en lieu et place de celui-ci." -#: contrib/comments/models.py:91 +#: contrib/comments/models.py:92 msgid "comments" msgstr "commentaires" -#: contrib/comments/models.py:131 contrib/comments/models.py:207 +#: contrib/comments/models.py:121 contrib/comments/models.py:188 msgid "Content object" msgstr "Type de contenu" -#: contrib/comments/models.py:159 +#: contrib/comments/models.py:149 #, python-format msgid "" "Posted by %(user)s at %(date)s\n" @@ -872,48 +875,48 @@ msgstr "" "\n" "http://%(domain)s%(url)s" -#: contrib/comments/models.py:168 +#: contrib/comments/models.py:158 msgid "person's name" msgstr "nom" -#: contrib/comments/models.py:171 +#: contrib/comments/models.py:161 msgid "ip address" msgstr "adresse IP" -#: contrib/comments/models.py:173 +#: contrib/comments/models.py:163 msgid "approved by staff" msgstr "approuvé par l'équipe" -#: contrib/comments/models.py:176 +#: contrib/comments/models.py:167 msgid "free comment" msgstr "commentaire libre" -#: contrib/comments/models.py:177 +#: contrib/comments/models.py:168 msgid "free comments" msgstr "commentaires libres" -#: contrib/comments/models.py:233 +#: contrib/comments/models.py:214 msgid "score" msgstr "evaluation" -#: contrib/comments/models.py:234 +#: contrib/comments/models.py:215 msgid "score date" msgstr "date d'évaluation" -#: contrib/comments/models.py:237 +#: contrib/comments/models.py:219 msgid "karma score" msgstr "point de Karma" -#: contrib/comments/models.py:238 +#: contrib/comments/models.py:220 msgid "karma scores" msgstr "points de Karma" -#: contrib/comments/models.py:242 +#: contrib/comments/models.py:224 #, python-format msgid "%(score)d rating by %(user)s" msgstr "%(score)d évalué par %(user)s" -#: contrib/comments/models.py:258 +#: contrib/comments/models.py:240 #, python-format msgid "" "This comment was flagged by %(user)s:\n" @@ -924,36 +927,36 @@ msgstr "" "\n" "%(text)s" -#: contrib/comments/models.py:265 +#: contrib/comments/models.py:247 msgid "flag date" msgstr "date d'indicateur" -#: contrib/comments/models.py:268 +#: contrib/comments/models.py:251 msgid "user flag" msgstr "indicateur utilisateur" -#: contrib/comments/models.py:269 +#: contrib/comments/models.py:252 msgid "user flags" msgstr "indicateurs utilisateur" -#: contrib/comments/models.py:273 +#: contrib/comments/models.py:256 #, python-format msgid "Flag by %r" msgstr "Indicateur par %r" -#: contrib/comments/models.py:278 +#: contrib/comments/models.py:261 msgid "deletion date" msgstr "date de suppression" -#: contrib/comments/models.py:280 +#: contrib/comments/models.py:264 msgid "moderator deletion" msgstr "suppression de modérateur" -#: contrib/comments/models.py:281 +#: contrib/comments/models.py:265 msgid "moderator deletions" msgstr "suppressions de modérateur" -#: contrib/comments/models.py:285 +#: contrib/comments/models.py:269 #, python-format msgid "Moderator deletion by %r" msgstr "Suppression de modérateur par %r" @@ -990,12 +993,12 @@ msgid_plural "" "%(text)s" msgstr[0] "" "Ce commentaire a été posté par un utilisateur qui a posté moins de %(count)s " -"commentaire :\n" +"commentaire&nbsp;:\n" "\n" "%(text)s" msgstr[1] "" "Ce commentaire a été posté par un utilisateur qui a posté moins de %(count)s " -"commentaires :\n" +"commentaires&nbsp;:\n" "\n" "%(text)s" @@ -1006,7 +1009,7 @@ msgid "" "\n" "%(text)s" msgstr "" -"Ce commentaire a été posté par un utilisateur imprécis :\n" +"Ce commentaire a été posté par un utilisateur imprécis&nbsp;:\n" "\n" "%(text)s" @@ -1045,12 +1048,12 @@ msgstr "" #: contrib/comments/templates/comments/freeform.html:4 msgid "Your name:" -msgstr "Votre nom :" +msgstr "Votre nom&nbsp;:" #: contrib/comments/templates/comments/freeform.html:5 #: contrib/comments/templates/comments/form.html:28 msgid "Comment:" -msgstr "Commentaire :" +msgstr "Commentaire&nbsp;:" #: contrib/comments/templates/comments/freeform.html:10 #: contrib/comments/templates/comments/form.html:35 @@ -1059,16 +1062,16 @@ 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 +#: contrib/admin/templates/admin/login.html:19 msgid "Username:" msgstr "Nom d'utilisateur" #: contrib/comments/templates/comments/form.html:6 -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/object_history.html:4 +#: contrib/admin/templates/admin/change_list.html:8 +#: contrib/admin/templates/admin/change_form.html:16 #: contrib/admin/templates/admin/base.html:25 -#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/delete_confirmation.html:4 #: 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 @@ -1086,7 +1089,7 @@ msgid "Log out" msgstr "Déconnexion" #: contrib/comments/templates/comments/form.html:8 -#: contrib/admin/templates/admin/login.html:20 +#: contrib/admin/templates/admin/login.html:22 msgid "Password:" msgstr "Mot de passe" @@ -1120,11 +1123,11 @@ msgstr "nom de domaine" msgid "display name" msgstr "nom à afficher" -#: contrib/sites/models.py:15 +#: contrib/sites/models.py:16 msgid "site" msgstr "site" -#: contrib/sites/models.py:16 +#: contrib/sites/models.py:17 msgid "sites" msgstr "sites" @@ -1134,7 +1137,7 @@ msgid "" "

    By %s:

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

      Par %s :

      \n" +"

      Par %s&nbsp;:

      \n" "
        \n" #: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88 @@ -1162,6 +1165,66 @@ msgstr "Ce mois-ci" msgid "This year" msgstr "Cette année" +#: contrib/admin/options.py:307 contrib/admin/views/auth.py:19 +#, 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/options.py:311 contrib/admin/options.py:363 +#: contrib/admin/views/auth.py:24 +msgid "You may edit it again below." +msgstr "Vous pouvez continuez de l'éditez ci-dessous." + +#: contrib/admin/options.py:321 contrib/admin/options.py:372 +#, python-format +msgid "You may add another %s below." +msgstr "Vous pouvez ajouter un autre %s ci-dessous." + +#: contrib/admin/options.py:358 +msgid "No fields changed." +msgstr "Aucun champ modifié." + +#: contrib/admin/options.py:361 +#, 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/options.py:369 +#, python-format +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "" +"L'objet %(name)s \"%(obj)s\" a été ajouté avec succès.Vous pouvez continuez " +"de l'éditez ci-dessous." + +#: contrib/admin/options.py:408 +#, python-format +msgid "Add %s" +msgstr "Ajouter %s" + +#: contrib/admin/options.py:468 +#, python-format +msgid "Change %s" +msgstr "Changement %s" + +#: contrib/admin/options.py:494 +msgid "Database error" +msgstr "Erreur de base de données" + +#: contrib/admin/options.py:539 +#, 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/options.py:542 +msgid "Are you sure?" +msgstr "Êtes-vous sûr ?" + +#: contrib/admin/options.py:564 +#, python-format +msgid "Change history: %s" +msgstr "Historique des changements&nbsp;: %s" + #: contrib/admin/models.py:16 msgid "action time" msgstr "heure de l'action" @@ -1190,11 +1253,16 @@ msgstr "entrée d'historique" msgid "log entries" msgstr "entrées d'historique" -#: contrib/admin/templatetags/admin_list.py:247 -msgid "All dates" -msgstr "Toutes les dates" +#: contrib/admin/widgets.py:43 +msgid "Date:" +msgstr "Date&nbsp;:" -#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:60 +#: contrib/admin/widgets.py:43 +msgid "Time:" +msgstr "Heure&nbsp;:" + +#: contrib/admin/sites.py:13 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." @@ -1203,12 +1271,12 @@ msgstr "" "Remarquez que chacun de ces champs est sensible à la casse (différenciation " "des majuscules/minuscules)." -#: contrib/admin/views/decorators.py:24 -#: contrib/admin/templates/admin/login.html:25 +#: contrib/admin/sites.py:33 contrib/admin/views/decorators.py:24 +#: contrib/admin/templates/admin/login.html:27 msgid "Log in" msgstr "Connectez-vous" -#: contrib/admin/views/decorators.py:62 +#: contrib/admin/sites.py:186 contrib/admin/views/decorators.py:62 msgid "" "Please log in again, because your session has expired. Don't worry: Your " "submission has been saved." @@ -1216,7 +1284,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:69 +#: contrib/admin/sites.py:193 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." @@ -1224,283 +1292,70 @@ 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:83 +#: contrib/admin/sites.py:207 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:85 +#: contrib/admin/sites.py:209 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/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/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/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 +#: contrib/admin/sites.py:263 contrib/admin/views/main.py:136 msgid "Site administration" msgstr "Gestion du site" -#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356 +#: contrib/admin/templatetags/admin_list.py:247 +msgid "All dates" +msgstr "Toutes les dates" + +#: contrib/admin/views/auth.py:30 +msgid "Add user" +msgstr "Ajouter l'utilisateur" + +#: contrib/admin/views/auth.py:55 +msgid "Password changed successfully." +msgstr "Mot de passe modifié avec succés" + +#: contrib/admin/views/auth.py:62 #, python-format -msgid "You may add another %s below." -msgstr "Vous pouvez ajouter un autre %s ci-dessous." +msgid "Change password: %s" +msgstr "Modifier le mot de passe&nbsp;: %s" -#: contrib/admin/views/main.py:289 -#, python-format -msgid "Add %s" -msgstr "Ajouter %s" - -#: contrib/admin/views/main.py:335 -#, python-format -msgid "Added %s." -msgstr "Ajouté %s." - -#: contrib/admin/views/main.py:337 -#, python-format -msgid "Changed %s." -msgstr "Modifié %s." - -#: contrib/admin/views/main.py:339 -#, python-format -msgid "Deleted %s." -msgstr "Supprimé %s." - -#: contrib/admin/views/main.py:342 -msgid "No fields changed." -msgstr "Aucun champ modifié." - -#: 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:353 -#, python-format -msgid "" -"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." -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:391 -#, python-format -msgid "Change %s" -msgstr "Changement %s" - -#: contrib/admin/views/main.py:476 +#: contrib/admin/views/main.py:215 #, python-format msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "Un ou plusieurs %(fieldname)s dans %(name)s: %(obj)s" +msgstr "Un ou plusieurs %(fieldname)s dans %(name)s&nbsp;: %(obj)s" -#: contrib/admin/views/main.py:481 +#: contrib/admin/views/main.py:220 #, python-format msgid "One or more %(fieldname)s in %(name)s:" -msgstr "Un ou plusieurs %(fieldname)s dans %(name)s:" +msgstr "Un ou plusieurs %(fieldname)s dans %(name)s&nbsp;: " -#: 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:517 -msgid "Are you sure?" -msgstr "Êtes-vous sûr ?" - -#: contrib/admin/views/main.py:539 -#, python-format -msgid "Change history: %s" -msgstr "Historique des changements : %s" - -#: contrib/admin/views/main.py:573 +#: contrib/admin/views/main.py:262 #, python-format msgid "Select %s" msgstr "Sélectionnez %s" -#: contrib/admin/views/main.py:573 +#: contrib/admin/views/main.py:262 #, python-format msgid "Select %s to change" msgstr "Sélectionnez %s pour changer" -#: contrib/admin/views/main.py:768 -msgid "Database error" -msgstr "Erreur de base de données" - -#: 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 "tous les %s" - -#: contrib/admin/views/doc.py:224 -#, python-format -msgid "number of %s" -msgstr "nombre de %s" - -#: contrib/admin/views/doc.py:229 -#, python-format -msgid "Fields on %s objects" -msgstr "Champs sur les objets %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 "Entier" - -#: contrib/admin/views/doc.py:292 -msgid "Boolean (Either True or False)" -msgstr "Booléen (Vrai ou Faux)" - -#: 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:294 -msgid "Comma-separated integers" -msgstr "Des entiers séparés par une virgule" - -#: contrib/admin/views/doc.py:295 -msgid "Date (without time)" -msgstr "Date (sans l'heure)" - -#: contrib/admin/views/doc.py:296 -msgid "Date (with time)" -msgstr "Date (avec l'heure)" - -#: contrib/admin/views/doc.py:297 -msgid "E-mail address" -msgstr "Courriel :" - -#: 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:300 -msgid "Decimal number" -msgstr "Nombre décimal" - -#: 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:307 -msgid "Relation to parent model" -msgstr "Relation au modèle parent" - -#: contrib/admin/views/doc.py:308 -msgid "Phone number" -msgstr "Numéro de téléphone" - -#: contrib/admin/views/doc.py:313 -msgid "Text" -msgstr "Texte" - -#: contrib/admin/views/doc.py:314 -msgid "Time" -msgstr "Heure" - -#: 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 "État U.S. (deux lettres majuscules)" - -#: 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 :" +msgstr "Actuellement&nbsp;:" #: contrib/admin/templates/widget/file.html:3 msgid "Change:" -msgstr "Modification :" +msgstr "Modification&nbsp;:" -#: 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/change_form.html:10 +#: contrib/admin/templates/admin/object_history.html:4 +#: contrib/admin/templates/admin/change_list.html:8 +#: contrib/admin/templates/admin/change_form.html:16 #: contrib/admin/templates/admin/base.html:25 -#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/delete_confirmation.html:4 #: 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 @@ -1508,11 +1363,11 @@ msgstr "Heure :" msgid "Documentation" msgstr "Documentation" -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/object_history.html:4 +#: contrib/admin/templates/admin/change_list.html:8 +#: contrib/admin/templates/admin/change_form.html:16 #: contrib/admin/templates/admin/base.html:25 -#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/delete_confirmation.html:4 #: 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 @@ -1531,13 +1386,13 @@ msgstr "Documentation" msgid "Change password" msgstr "Modifier votre mot de passe" -#: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/change_list.html:6 +#: contrib/admin/templates/admin/object_history.html:7 +#: contrib/admin/templates/admin/change_list.html:10 #: 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/change_form.html:20 #: contrib/admin/templates/admin/base.html:30 -#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/delete_confirmation.html:8 #: 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 @@ -1548,8 +1403,8 @@ msgstr "Modifier votre mot de passe" msgid "Home" msgstr "Accueil" -#: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/change_form.html:21 +#: contrib/admin/templates/admin/object_history.html:7 +#: contrib/admin/templates/admin/change_form.html:29 msgid "History" msgstr "Historique" @@ -1569,7 +1424,7 @@ msgstr "Action" msgid "DATE_WITH_TIME_FULL" msgstr "j. N Y, H:i" -#: contrib/admin/templates/admin/object_history.html:36 +#: contrib/admin/templates/admin/object_history.html:34 msgid "" "This object doesn't have a change history. It probably wasn't added via this " "admin site." @@ -1577,11 +1432,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/change_list.html:12 +#: contrib/admin/templates/admin/change_list.html:18 #, python-format msgid "Add %(name)s" msgstr "Ajouter %(name)s" +#: contrib/admin/templates/admin/change_list.html:28 +msgid "Filter" +msgstr "Filtre" + #: contrib/admin/templates/admin/filter.html:2 #, python-format msgid " By %(filter_title)s " @@ -1608,13 +1467,14 @@ 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 +#: contrib/admin/templates/admin/invalid_setup.html:7 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 "Quelque chose ne va pas avec votre base de données. Vérifiez que les" -"bonnes bases ont été créées, et qu'elle est lisible par le bon utilisateur." +msgstr "" +"Quelque chose ne va pas avec votre base de données. Vérifiez que lesbonnes " +"bases ont été créées, et qu'elle est lisible par le bon utilisateur." #: contrib/admin/templates/admin/search_form.html:8 msgid "Go" @@ -1644,10 +1504,6 @@ msgstr "Site d'administration de Django" 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" @@ -1657,70 +1513,62 @@ msgstr "Cette page n'a pas été trouvée" msgid "We're sorry, but the requested page could not be found." msgstr "Nous sommes désolés, mais la page demandée est introuvable." -#: contrib/admin/templates/admin/index.html:17 +#: contrib/admin/templates/admin/index.html:18 #, python-format msgid "Models available in the %(name)s application." msgstr "Modèles disponibles dans l'application %(name)s." -#: contrib/admin/templates/admin/index.html:18 +#: contrib/admin/templates/admin/index.html:19 #, python-format msgid "%(name)s" msgstr "%(name)s" -#: contrib/admin/templates/admin/index.html:28 -#: contrib/admin/templates/admin/change_form.html:15 +#: contrib/admin/templates/admin/index.html:29 +#: contrib/admin/templates/admin/change_form.html:22 msgid "Add" msgstr "Ajouter" -#: contrib/admin/templates/admin/index.html:34 +#: contrib/admin/templates/admin/index.html:35 msgid "Change" msgstr "Modifier" -#: contrib/admin/templates/admin/index.html:44 +#: contrib/admin/templates/admin/index.html:45 msgid "You don't have permission to edit anything." msgstr "Vous n'avez pas la permission d'éditer quoi que ce soit." -#: contrib/admin/templates/admin/index.html:52 +#: contrib/admin/templates/admin/index.html:53 msgid "Recent Actions" msgstr "Actions récentes" -#: contrib/admin/templates/admin/index.html:53 +#: contrib/admin/templates/admin/index.html:54 msgid "My Actions" msgstr "Mes actions" -#: contrib/admin/templates/admin/index.html:57 +#: contrib/admin/templates/admin/index.html:58 msgid "None available" msgstr "Aucun(e) disponible" -#: contrib/admin/templates/admin/change_form.html:22 +#: contrib/admin/templates/admin/change_form.html:30 msgid "View on site" msgstr "Voir sur le site" -#: contrib/admin/templates/admin/change_form.html:32 +#: contrib/admin/templates/admin/change_form.html:40 #: 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:25 msgid "Welcome," msgstr "Bienvenue," -#: contrib/admin/templates/admin/delete_confirmation.html:9 +#: contrib/admin/templates/admin/delete_confirmation.html:11 #: contrib/admin/templates/admin/submit_line.html:3 msgid "Delete" msgstr "Supprimer" -#: contrib/admin/templates/admin/delete_confirmation.html:14 +#: contrib/admin/templates/admin/delete_confirmation.html:17 #, python-format msgid "" "Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " @@ -1729,9 +1577,9 @@ msgid "" msgstr "" "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 :" +"permission de supprimer les types d'objets suivants&nbsp;:" -#: contrib/admin/templates/admin/delete_confirmation.html:21 +#: contrib/admin/templates/admin/delete_confirmation.html:24 #, python-format msgid "" "Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " @@ -1739,9 +1587,9 @@ msgid "" msgstr "" "Ê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 :" +"aussi supprimés&nbsp;:" -#: contrib/admin/templates/admin/delete_confirmation.html:26 +#: contrib/admin/templates/admin/delete_confirmation.html:29 msgid "Yes, I'm sure" msgstr "Oui, j'en suis certain" @@ -1829,7 +1677,7 @@ msgstr "" #: contrib/admin/templates/registration/password_reset_form.html:16 msgid "E-mail address:" -msgstr "Courriel :" +msgstr "Courriel&nbsp;:" #: contrib/admin/templates/registration/password_reset_form.html:16 msgid "Reset my password" @@ -1867,11 +1715,11 @@ msgstr "" #: contrib/admin/templates/registration/password_change_form.html:17 msgid "Old password:" -msgstr "Ancien mot de passe :" +msgstr "Ancien mot de passe&nbsp;:" #: contrib/admin/templates/registration/password_change_form.html:19 msgid "New password:" -msgstr "Nouveau mot de passe :" +msgstr "Nouveau mot de passe&nbsp;:" #: contrib/admin/templates/registration/password_change_form.html:21 msgid "Confirm password:" @@ -1894,15 +1742,15 @@ msgstr "pour votre compte au site %(site_name)s" #: contrib/admin/templates/registration/password_reset_email.html:5 #, python-format msgid "Your new password is: %(new_password)s" -msgstr "Votre nouveau mot de passe est : %(new_password)s" +msgstr "Votre nouveau mot de passe est&nbsp;: %(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 "Vous pouvez modifier ce mot de passe à l'adresse suivante :" +msgstr "Vous pouvez modifier ce mot de passe à l'adresse suivante&nbsp;:" #: contrib/admin/templates/registration/password_reset_email.html:11 msgid "Your username, in case you've forgotten:" -msgstr "Votre nom d'utilisateur, en cas d'oubli :" +msgstr "Votre nom d'utilisateur, en cas d'oubli&nbsp;:" #: contrib/admin/templates/registration/password_reset_email.html:13 msgid "Thanks for using our site!" @@ -1932,12 +1780,14 @@ msgid "" "your computer is \"internal\").

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

        Pour installer des bookmarklets, faîtes glisser le lien vers\n" +"

        Pour installer des bookmarklets, faîtes glisser le lien " +"vers\n" "votre barre de marques-pages, ou cliquez droit dessus et ajoutez-y le.\n" "Maintenant vous pouvez le sélectionner depuis n'importe quelle page\n" "du site. Notez que certains d'entre eux nécessitent que vous visionniez\n" "le site depuis un ordinateur dit \"interne\" (veuillez contacter votre\n" -"administrateur système si vous n'êtes pas sûr que votre ordinateur le soit).

        \n" +"administrateur système si vous n'êtes pas sûr que votre ordinateur le soit)." +"

        \n" #: contrib/admin/templates/admin_doc/bookmarklets.html:19 msgid "Documentation for this page" @@ -1981,15 +1831,15 @@ msgstr "" "Comme ci-dessus, mais ouvre la page d'administration dans une nouvelle " "fenêtre." -#: contrib/contenttypes/models.py:26 +#: contrib/contenttypes/models.py:36 msgid "python model class name" msgstr "nom du module python" -#: contrib/contenttypes/models.py:29 +#: contrib/contenttypes/models.py:39 msgid "content type" msgstr "type de contenu" -#: contrib/contenttypes/models.py:30 +#: contrib/contenttypes/models.py:40 msgid "content types" msgstr "types de contenu" @@ -1997,7 +1847,7 @@ msgstr "types de contenu" msgid "Logged out" msgstr "Déconnecté" -#: contrib/auth/models.py:38 contrib/auth/models.py:57 +#: contrib/auth/models.py:38 contrib/auth/models.py:58 msgid "name" msgstr "nom" @@ -2005,19 +1855,19 @@ msgstr "nom" msgid "codename" msgstr "nom de code" -#: contrib/auth/models.py:42 +#: contrib/auth/models.py:43 msgid "permission" msgstr "permission" -#: contrib/auth/models.py:43 contrib/auth/models.py:58 +#: contrib/auth/models.py:44 contrib/auth/models.py:59 msgid "permissions" msgstr "permissions" -#: contrib/auth/models.py:60 +#: contrib/auth/models.py:62 msgid "group" msgstr "groupe" -#: contrib/auth/models.py:61 contrib/auth/models.py:100 +#: contrib/auth/models.py:63 contrib/auth/models.py:100 msgid "groups" msgstr "groupes" @@ -2110,34 +1960,38 @@ msgstr "" msgid "user permissions" msgstr "permissions de l'utilisateur" -#: contrib/auth/models.py:105 +#: contrib/auth/models.py:106 msgid "user" msgstr "utilisateur" -#: contrib/auth/models.py:106 +#: contrib/auth/models.py:107 msgid "users" msgstr "utilisateurs" -#: contrib/auth/models.py:111 +#: contrib/auth/models.py:248 +msgid "message" +msgstr "message" + +#: contrib/auth/models.py:261 +msgid "AnonymousUser" +msgstr "Anonyme" + +#: contrib/auth/models.py:320 msgid "Personal info" msgstr "Information personnelle" -#: contrib/auth/models.py:112 +#: contrib/auth/models.py:321 msgid "Permissions" msgstr "Permissions" -#: contrib/auth/models.py:113 +#: contrib/auth/models.py:322 msgid "Important dates" msgstr "Dates importantes" -#: contrib/auth/models.py:114 +#: contrib/auth/models.py:323 msgid "Groups" msgstr "Groupes" -#: contrib/auth/models.py:258 -msgid "message" -msgstr "message" - #: 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." @@ -2174,31 +2028,461 @@ msgstr "Les deux nouveaux mots de passe ne correspondent pas." msgid "Your old password was entered incorrectly. Please enter it again." msgstr "Votre ancien mot de passe est incorrect. Veuillez le rectifier." +#: contrib/admindocs/views.py:46 contrib/admindocs/views.py:48 +#: contrib/admindocs/views.py:50 +msgid "tag:" +msgstr "mot-clé&nbsp;:" + +#: contrib/admindocs/views.py:77 contrib/admindocs/views.py:79 +#: contrib/admindocs/views.py:81 +msgid "filter:" +msgstr "filtre&nbsp;:" + +#: contrib/admindocs/views.py:135 contrib/admindocs/views.py:137 +#: contrib/admindocs/views.py:139 +msgid "view:" +msgstr "vue&nbsp;:" + +#: contrib/admindocs/views.py:164 +#, python-format +msgid "App %r not found" +msgstr "L'application %r n'a pas été trouvée." + +#: contrib/admindocs/views.py:171 +#, python-format +msgid "Model %(name)r not found in app %(app)r" +msgstr "Le modèle %(name)r n'a pas été trouvé dans l'application %(app)r" + +#: contrib/admindocs/views.py:183 +#, python-format +msgid "the related `%(app)s.%(type)s` object" +msgstr "l'objet `%(app)s.%(type)s en relation " + +#: contrib/admindocs/views.py:183 contrib/admindocs/views.py:205 +#: contrib/admindocs/views.py:219 contrib/admindocs/views.py:224 +msgid "model:" +msgstr "modèle&nbsp;:" + +#: contrib/admindocs/views.py:214 +#, python-format +msgid "related `%(app)s.%(name)s` objects" +msgstr "les objets `%(app)s.%(name)s en relation" + +#: contrib/admindocs/views.py:219 +#, python-format +msgid "all %s" +msgstr "tous les %s" + +#: contrib/admindocs/views.py:224 +#, python-format +msgid "number of %s" +msgstr "nombre de %s" + +#: contrib/admindocs/views.py:229 +#, python-format +msgid "Fields on %s objects" +msgstr "Champs sur les objets %s" + +#: contrib/admindocs/views.py:291 contrib/admindocs/views.py:301 +#: contrib/admindocs/views.py:303 contrib/admindocs/views.py:309 +#: contrib/admindocs/views.py:310 contrib/admindocs/views.py:312 +msgid "Integer" +msgstr "Entier" + +#: contrib/admindocs/views.py:292 +msgid "Boolean (Either True or False)" +msgstr "Booléen (Vrai ou Faux)" + +#: contrib/admindocs/views.py:293 contrib/admindocs/views.py:311 +#, python-format +msgid "String (up to %(maxlength)s)" +msgstr "Chaîne de caractère (jusqu'à %(maxlength)s)" + +#: contrib/admindocs/views.py:294 +msgid "Comma-separated integers" +msgstr "Des entiers séparés par une virgule" + +#: contrib/admindocs/views.py:295 +msgid "Date (without time)" +msgstr "Date (sans l'heure)" + +#: contrib/admindocs/views.py:296 +msgid "Date (with time)" +msgstr "Date (avec l'heure)" + +#: contrib/admindocs/views.py:297 +msgid "E-mail address" +msgstr "Courriel&nbsp;:" + +#: contrib/admindocs/views.py:298 contrib/admindocs/views.py:299 +#: contrib/admindocs/views.py:302 +msgid "File path" +msgstr "Chemin vers le fichier" + +#: contrib/admindocs/views.py:300 +msgid "Decimal number" +msgstr "Nombre décimal" + +#: contrib/admindocs/views.py:306 +msgid "Boolean (Either True, False or None)" +msgstr "Booléen (Vrai, Faux ou None)" + +#: contrib/admindocs/views.py:307 +msgid "Relation to parent model" +msgstr "Relation au modèle parent" + +#: contrib/admindocs/views.py:308 +msgid "Phone number" +msgstr "Numéro de téléphone" + +#: contrib/admindocs/views.py:313 +msgid "Text" +msgstr "Texte" + +#: contrib/admindocs/views.py:314 +msgid "Time" +msgstr "Heure" + +#: contrib/admindocs/views.py:315 contrib/flatpages/models.py:7 +msgid "URL" +msgstr "URL" + +#: contrib/admindocs/views.py:316 +msgid "U.S. state (two uppercase letters)" +msgstr "État U.S. (deux lettres majuscules)" + +#: contrib/admindocs/views.py:317 +msgid "XML text" +msgstr "Texte XML" + +#: contrib/admindocs/views.py:343 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "%s ne semble pas être un objet urlpattern" + #: contrib/localflavor/uk/forms.py:18 msgid "Enter a postcode. A space is required between the two postcode parts." msgstr "" +"Entrez un code postal Anglais. Un espace est requis entre les deux parties." -#: contrib/localflavor/usa/forms.py:17 -msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +#: contrib/localflavor/au/forms.py:18 +msgid "Enter a 4 digit post code." +msgstr "Entrez un code postal Australien (4 chiffres)." + +#: contrib/localflavor/fr/forms.py:17 contrib/localflavor/de/forms.py:16 +#: contrib/localflavor/it/forms.py:14 contrib/localflavor/fi/forms.py:14 +msgid "Enter a zip code in the format XXXXX." +msgstr "Entrez un code postal (format XXXXX)." + +#: contrib/localflavor/jp/forms.py:21 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "Entrez un code postal Japonais (format XXXXXXX ou XXX-XXXX)." + +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "Hokkaidō" + +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" +msgstr "Aomori" + +#: contrib/localflavor/jp/jp_prefectures.py:6 +msgid "Iwate" +msgstr "Iwate" + +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" +msgstr "Miyagi" + +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" +msgstr "Akita" + +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" +msgstr "Yamagata" + +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" +msgstr "Fukushima" + +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "Ibaraki" + +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" +msgstr "Tochigi" + +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" +msgstr "Gunma" + +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" +msgstr "Saitama" + +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" +msgstr "Chiba" + +#: contrib/localflavor/jp/jp_prefectures.py:16 +msgid "Tokyo" +msgstr "Tokyo" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "Kanagawa" + +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "Yamanashi" + +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" +msgstr "Nagano" + +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" +msgstr "Niigata" + +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" +msgstr "Toyama" + +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "Ishikawa" + +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" +msgstr "Fukui" + +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" +msgstr "Gifu" + +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "Shizuoka" + +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" +msgstr "Aichi" + +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" +msgstr "Mie" + +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" +msgstr "Shiga" + +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" +msgstr "Kyōto" + +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" +msgstr "Osaka" + +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" +msgstr "Hyōgo" + +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "Nara" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "Wakayama" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "Tottori" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +msgid "Shimane" +msgstr "Shimane" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "Okayama" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "Hiroshima" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "Yamaguchi" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "Tokushima" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +msgid "Kagawa" +msgstr "Kagawa" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +msgid "Ehime" +msgstr "Ehime" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "Kochi" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "Fukuoka" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "Saga" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "Nagasaki" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "Kumamoto" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "Ōita" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "Miyazaki" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "Kagoshima" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" +msgstr "Okinawa" + +#: contrib/localflavor/br/forms.py:18 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "Entrez un code postal Brésilien (format XXXXX-XXX)." + +#: contrib/localflavor/br/forms.py:30 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "Les numéros de téléphone doivent être au format XX-XXXX-XXXX." + +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "Bade-Wurtemberg" + +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "Bavière" + +#: contrib/localflavor/de/de_states.py:7 +msgid "Berlin" +msgstr "Berlin" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "Brandebourg" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "Brême" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "Hambourg" + +#: contrib/localflavor/de/de_states.py:11 +msgid "Hessen" +msgstr "Hess" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "Mecklembourg-Poméranie occidentale" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "Basse Saxe" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "Rhénanie-du-Nord-Westphalie" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "Rhénanie-Palatinat" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "Sarre" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "Saxe" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "Saxe-Anhalt" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "Schleswig-Holstein" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "Thuringe" + +#: contrib/localflavor/de/forms.py:60 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." msgstr "" +"Entrez un numéro de carte d'identité Allemand (format XXXXXXXXXXX-XXXXXXX-" +"XXXXXXX-X)." -#: contrib/sessions/models.py:51 +#: contrib/localflavor/no/forms.py:15 +msgid "Enter a zip code in the format XXXX." +msgstr "Entrez un code postal Norvégien (format XXXX)." + +#: contrib/localflavor/no/forms.py:36 +msgid "Enter a valid Norwegian social security number." +msgstr "Entrez un numéro de sécurité sociale Norvégien." + +#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:46 +msgid "Enter a valid Finnish social security number." +msgstr "Entrez un numéro de sécurité sociale Finlandais." + +#: contrib/localflavor/us/forms.py:18 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "Entrez un code postal Américain (format XXXXX ou XXXXX-XXXX)." + +#: contrib/localflavor/us/forms.py:51 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "Entrez un numéro de sécurité sociale Américain (format XXX-XX-XXXX)." + +#: contrib/sessions/models.py:68 msgid "session key" msgstr "clé de session" -#: contrib/sessions/models.py:52 +#: contrib/sessions/models.py:69 msgid "session data" msgstr "donnée de session" -#: contrib/sessions/models.py:53 +#: contrib/sessions/models.py:70 msgid "expire date" msgstr "date d'expiration" -#: contrib/sessions/models.py:57 +#: contrib/sessions/models.py:74 msgid "session" msgstr "session" -#: contrib/sessions/models.py:58 +#: contrib/sessions/models.py:75 msgid "sessions" msgstr "sessions" @@ -2206,8 +2490,8 @@ msgstr "sessions" 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." +"Par exemple&nbsp;: '/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" @@ -2243,11 +2527,11 @@ msgstr "" "Si coché, seuls les utilisateurs connectés auront la possibilité de voir " "cette page." -#: contrib/flatpages/models.py:18 +#: contrib/flatpages/models.py:19 msgid "flat page" msgstr "page à plat" -#: contrib/flatpages/models.py:19 +#: contrib/flatpages/models.py:20 msgid "flat pages" msgstr "pages à plat" @@ -2463,32 +2747,73 @@ msgstr "minuit" msgid "noon" msgstr "midi" -#: utils/translation/trans_real.py:362 +#: utils/translation/trans_real.py:358 msgid "DATE_FORMAT" msgstr "j F Y" -#: utils/translation/trans_real.py:363 +#: utils/translation/trans_real.py:359 msgid "DATETIME_FORMAT" msgstr "j F Y, G:i" -#: utils/translation/trans_real.py:364 +#: utils/translation/trans_real.py:360 msgid "TIME_FORMAT" msgstr "G:i:s" -#: utils/translation/trans_real.py:380 -#, fuzzy +#: utils/translation/trans_real.py:376 msgid "YEAR_MONTH_FORMAT" -msgstr "j F Y" +msgstr "F Y" -#: utils/translation/trans_real.py:381 -#, fuzzy +#: utils/translation/trans_real.py:377 msgid "MONTH_DAY_FORMAT" -msgstr "j F Y" +msgstr "j F" #: template/defaultfilters.py:491 msgid "yes,no,maybe" msgstr "oui,non,peut-être" +#: template/defaultfilters.py:520 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "%(size)d octet" +msgstr[1] "%(size)d octets" + +#: template/defaultfilters.py:522 +#, python-format +msgid "%.1f KB" +msgstr "%.1f Ko" + +#: template/defaultfilters.py:524 +#, python-format +msgid "%.1f MB" +msgstr "%.1f Mo" + +#: template/defaultfilters.py:525 +#, python-format +msgid "%.1f GB" +msgstr "%.1f Go" + +#~ msgid "One or more %(fieldname)s in %(name)s&nbsp;:" +#~ msgstr "Un ou plusieurs %(fieldname)s dans %(name)s&nbsp;:" + +#~ msgid "Separate multiple IDs with commas." +#~ msgstr "Séparez les ID par des virgules." + +#~ msgid "Added %s." +#~ msgstr "Ajouté %s." + +#~ msgid "Changed %s." +#~ msgstr "Modifié %s." + +#~ msgid "Deleted %s." +#~ msgstr "Supprimé %s." + +#~ msgid "Ordering" +#~ msgstr "Tri" + +#~ msgid "Order:" +#~ msgstr "Ordre&nbsp;:" + #~ msgid "%dth" #~ msgstr "%de" diff --git a/django/conf/locale/he/LC_MESSAGES/django.mo b/django/conf/locale/he/LC_MESSAGES/django.mo index 0f8b07e5bb..50021ed86d 100644 Binary files a/django/conf/locale/he/LC_MESSAGES/django.mo and b/django/conf/locale/he/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/he/LC_MESSAGES/django.po b/django/conf/locale/he/LC_MESSAGES/django.po index 6e4df17521..9fc5d7ee80 100644 --- a/django/conf/locale/he/LC_MESSAGES/django.po +++ b/django/conf/locale/he/LC_MESSAGES/django.po @@ -1,121 +1,171 @@ # translation of Django. # Copyright (C) 2006 THE Django'S COPYRIGHT HOLDER # This file is distributed under the same license as the Django package. +# Meir Kriheli , 2007. # # msgid "" msgstr "" "Project-Id-Version: Django 0.95\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-06-15 12:42+0300\n" -"PO-Revision-Date: 2006-06-15 12:40+0300\n" -"Last-Translator: Meir Kriheli \n" -"Language-Team: Hebrew\n" +"POT-Creation-Date: 2007-05-04 19:38+0300\n" +"PO-Revision-Date: 2007-05-06 12:43+0300\n" +"Last-Translator: meir <(null)>\n" +"Language-Team: English \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" +"Content-Transfer-Encoding: 8bit" -#: template/defaultfilters.py:389 -msgid "yes,no,maybe" -msgstr "כן,לא,אולי" +#: newforms/models.py:165 newforms/fields.py:364 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "יש לבחור אפשרות חוקית; '%(data)s' אינו בין %(choices)s." -#: forms/__init__.py:346 db/models/fields/__init__.py:114 -#: db/models/fields/__init__.py:265 db/models/fields/__init__.py:545 -#: db/models/fields/__init__.py:556 +#: newforms/models.py:178 newforms/fields.py:80 newforms/fields.py:376 +#: newforms/fields.py:452 newforms/fields.py:463 +#: db/models/fields/__init__.py:117 db/models/fields/__init__.py:274 +#: db/models/fields/__init__.py:612 db/models/fields/__init__.py:623 +#: oldforms/__init__.py:357 msgid "This field is required." msgstr "יש להזין תוכן בשדה זה." -#: forms/__init__.py:381 +#: newforms/models.py:182 newforms/fields.py:380 newforms/fields.py:456 +msgid "Enter a list of values." +msgstr "יש להזין רשימת ערכים" + +#: newforms/models.py:188 newforms/fields.py:389 #, 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 תווים." +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "יש לבחור אפשרות חוקית. %s אינו בין האפשרויות הזמינות." -#: forms/__init__.py:386 -msgid "Line breaks are not allowed here." -msgstr "מעברי שורה אסורים כאן." +#: newforms/widgets.py:180 oldforms/__init__.py:577 +#: contrib/admin/filterspecs.py:150 +msgid "Unknown" +msgstr "לא ידוע" -#: forms/__init__.py:485 forms/__init__.py:558 forms/__init__.py:597 +#: newforms/widgets.py:180 oldforms/__init__.py:577 +#: contrib/admin/filterspecs.py:143 +msgid "Yes" +msgstr "כן" + +#: newforms/widgets.py:180 oldforms/__init__.py:577 +#: contrib/admin/filterspecs.py:143 +msgid "No" +msgstr "לא" + +#: newforms/fields.py:103 newforms/fields.py:256 #, python-format -msgid "Select a valid choice; '%(data)s' is not in %(choices)s." -msgstr "יש לבחור אפשרות חוקית; '%(data)s' אינו בין %(choices)s." +msgid "Ensure this value has at most %d characters." +msgstr "נא לוודא שהטקסט שלך מכיל %d תווים לכל היותר." -#: forms/__init__.py:659 core/validators.py:151 core/validators.py:376 -msgid "No file was submitted. Check the encoding type on the form." -msgstr "לא נשלח שום קובץ. נא לבדוק את סוג הקידוד של הטופס." +#: newforms/fields.py:105 newforms/fields.py:258 +#, python-format +msgid "Ensure this value has at least %d characters." +msgstr "נא לוודא שערך זה מכיל לפחות %d תווים" -#: forms/__init__.py:661 -msgid "The submitted file is empty." -msgstr "הקובץ שנשלח ריק." +#: newforms/fields.py:128 core/validators.py:120 +msgid "Enter a whole number." +msgstr "נא להזין מספר שלם." -#: forms/__init__.py:717 -msgid "Enter a whole number between -32,768 and 32,767." -msgstr "חש להזין מספר שלם בין ‎-32,768 ל- 32,767." +#: newforms/fields.py:130 +#, python-format +msgid "Ensure this value is less than or equal to %s." +msgstr "יש לוודא שערך זה פחות מ או שווה ל %s." -#: forms/__init__.py:727 -msgid "Enter a positive number." -msgstr "יש להזין מספר חיובי." +#: newforms/fields.py:132 +#, python-format +msgid "Ensure this value is greater than or equal to %s." +msgstr "יש לוודא שהערך גדול מ או שווה ל %s." -#: forms/__init__.py:737 -msgid "Enter a whole number between 0 and 32,767." -msgstr "יש להזין מספר שלם בין 0 ל- 32,767." +#: newforms/fields.py:165 +msgid "Enter a valid date." +msgstr "יש להזין תאריך חוקי." -#: utils/translation.py:363 -msgid "DATE_FORMAT" -msgstr "d.m.Y" +#: newforms/fields.py:192 +msgid "Enter a valid time." +msgstr "יש להזין שעה חוקית." -#: utils/translation.py:364 -msgid "DATETIME_FORMAT" -msgstr "d.m.y H:i:s" +#: newforms/fields.py:228 +msgid "Enter a valid date/time." +msgstr "יש להזין תאריך ושעה חוקיים." -#: utils/translation.py:365 -msgid "TIME_FORMAT" -msgstr "H:i:s" +#: newforms/fields.py:242 +msgid "Enter a valid value." +msgstr "יש להזין ערך חוקי." -#: utils/translation.py:381 -msgid "YEAR_MONTH_FORMAT" -msgstr "d.m.Y" +#: newforms/fields.py:271 core/validators.py:162 +msgid "Enter a valid e-mail address." +msgstr "יש להזין כתובת דוא\"ל חוקית." -#: utils/translation.py:382 -msgid "MONTH_DAY_FORMAT" -msgstr "d.m.Y" +#: newforms/fields.py:289 newforms/fields.py:311 +msgid "Enter a valid URL." +msgstr "יש להזין URL חוקי." -#: utils/timesince.py:12 -msgid "year" -msgid_plural "years" -msgstr[0] "שנה" -msgstr[1] "שנים" +#: newforms/fields.py:313 +msgid "This URL appears to be a broken link." +msgstr "ה-URL‏ הזה כנראה מכיל קישור שבור." -#: utils/timesince.py:13 -msgid "month" -msgid_plural "months" -msgstr[0] "חודש" -msgstr[1] "חודשים" +#: db/models/manipulators.py:307 +#, python-format +msgid "%(object)s with this %(type)s already exists for the given %(field)s." +msgstr "%(object)s עם %(type)s קיים כבר עבור %(field)s נתון." -#: utils/timesince.py:14 -msgid "week" -msgid_plural "weeks" -msgstr[0] "שבוע" -msgstr[1] "שבועות" +#: 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 "ו" -#: utils/timesince.py:15 -msgid "day" -msgid_plural "days" -msgstr[0] "יום" -msgstr[1] "ימים" +#: db/models/fields/related.py:53 +#, python-format +msgid "Please enter a valid %s." +msgstr "יש להזין %s חוקי." -#: utils/timesince.py:16 -msgid "hour" -msgid_plural "hours" -msgstr[0] "שעה" -msgstr[1] "שעות" +#: db/models/fields/related.py:642 +msgid "Separate multiple IDs with commas." +msgstr "יש להפריד מזהים מרובים בפסיקים." -#: utils/timesince.py:17 -msgid "minute" -msgid_plural "minutes" -msgstr[0] "דקה" -msgstr[1] "דקות" +#: db/models/fields/related.py:644 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "החזק את \"Control\", או \"Command\" על מק, לחוץ כדי לבחור יותר מאחד." + +#: db/models/fields/related.py:691 +#, 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 אינו חוקי." + +#: db/models/fields/__init__.py:42 +#, python-format +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "%(optname)s·עם·%(fieldname)s·זה קיימת כבר." + +#: db/models/fields/__init__.py:369 +msgid "This value must be an integer." +msgstr "ערך זה חייב להיות מספר שלם." + +#: db/models/fields/__init__.py:404 +msgid "This value must be either True or False." +msgstr "ערך זה חייב להיות אמת או שקר." + +#: db/models/fields/__init__.py:425 +msgid "This field cannot be null." +msgstr "שדה זה אינו יכול להכיל null." + +#: db/models/fields/__init__.py:459 core/validators.py:148 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "יש להזין תאריך במבנה YYYY-MM-DD." + +#: db/models/fields/__init__.py:528 core/validators.py:157 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "יש להזין תאריך ושעה במבנה YYYY-MM-DD HH:MM." + +#: db/models/fields/__init__.py:632 +msgid "Enter a valid filename." +msgstr "יש להזין שם קובץ חוקי." + +#: db/models/fields/__init__.py:753 +msgid "This value must be either None, True or False." +msgstr "ערך זה חייב להיות כלום, אמת או שקר." #: utils/dates.py:6 msgid "Monday" @@ -269,147 +319,411 @@ msgstr "נוב'" msgid "Dec." msgstr "דצמ'" -#: db/models/manipulators.py:302 +#: utils/timesince.py:12 +msgid "year" +msgstr "שנה" + +#: utils/timesince.py:13 +msgid "month" +msgstr "חודש" + +#: utils/timesince.py:14 +msgid "week" +msgstr "שבוע" + +#: utils/timesince.py:15 +msgid "day" +msgstr "יום" + +#: utils/timesince.py:16 +msgid "hour" +msgstr "שעה" + +#: utils/timesince.py:17 +msgid "minute" +msgstr "דקה" + +#: utils/timesince.py:40 #, python-format -msgid "%(object)s with this %(type)s already exists for the given %(field)s." -msgstr "%(object)s עם %(type)s קיים כבר עבור %(field)s נתון." +msgid "%d milliseconds" +msgstr "%d מילישניות" -#: db/models/fields/__init__.py:40 +#: utils/timesince.py:41 #, python-format -msgid "%(optname)s with this %(fieldname)s already exists." -msgstr "%(optname)s·עם·%(fieldname)s·זה קיימת כבר." +msgid "%(number)d %(type)s" +msgstr "%(number)d %(type)s" -#: db/models/fields/__init__.py:337 -msgid "This value must be an integer." -msgstr "ערך זה חייב להיות מספר שלם." - -#: db/models/fields/__init__.py:369 -msgid "This value must be either True or False." -msgstr "ערך זה חייב להיות אמת או שקר." - -#: db/models/fields/__init__.py:385 -msgid "This field cannot be null." -msgstr "שדה זה אינו יכול להכיל null." - -#: db/models/fields/__init__.py:471 core/validators.py:135 -msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." -msgstr "יש להזין תאריך ושעה במבנה YYYY-MM-DD HH:MM." - -#: db/models/fields/__init__.py:565 -msgid "Enter a valid filename." -msgstr "יש להזין שם קובץ חוקי." - -#: db/models/fields/related.py:43 +#: utils/timesince.py:47 #, python-format -msgid "Please enter a valid %s." -msgstr "יש להזין %s חוקי." +msgid ", %(number)d %(type)s" +msgstr ", %(number)d %(type)s" -#: db/models/fields/related.py:579 -msgid "Separate multiple IDs with commas." -msgstr "יש להפריד מזהים מרובים בפסיקים." +#: utils/dateformat.py:40 +msgid "p.m." +msgstr "אחר הצהריים" -#: db/models/fields/related.py:581 -msgid "" -"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr "החזק את \"Control\", או \"Command\" על מק, לחוץ כדי לבחור יותר מאחד." +#: utils/dateformat.py:41 +msgid "a.m." +msgstr "בבוקר" -#: db/models/fields/related.py:625 +#: 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:358 +msgid "DATE_FORMAT" +msgstr "d.m.Y" + +#: utils/translation/trans_real.py:359 +msgid "DATETIME_FORMAT" +msgstr "d.m.y H:i:s" + +#: utils/translation/trans_real.py:360 +msgid "TIME_FORMAT" +msgstr "H:i:s" + +#: utils/translation/trans_real.py:376 +msgid "YEAR_MONTH_FORMAT" +msgstr "d.m.Y" + +#: utils/translation/trans_real.py:377 +msgid "MONTH_DAY_FORMAT" +msgstr "d.m.Y" + +#: conf/global_settings.py:39 +msgid "Arabic" +msgstr "ערבית" + +#: conf/global_settings.py:40 +msgid "Bengali" +msgstr "בנגאלית - Bengali" + +#: conf/global_settings.py:41 +msgid "Catalan" +msgstr "קאטלונית - Catalan" + +#: conf/global_settings.py:42 +msgid "Czech" +msgstr "צ'כית - Czech" + +#: conf/global_settings.py:43 +msgid "Welsh" +msgstr "וולשית - Welsh" + +#: conf/global_settings.py:44 +msgid "Danish" +msgstr "דנית - Danish" + +#: conf/global_settings.py:45 +msgid "German" +msgstr "גרמנית - German" + +#: conf/global_settings.py:46 +msgid "Greek" +msgstr "יוונית - Greek" + +#: conf/global_settings.py:47 +msgid "English" +msgstr "אנגלית - English" + +#: conf/global_settings.py:48 +msgid "Spanish" +msgstr "ספרדית - Spanish" + +#: conf/global_settings.py:49 +msgid "Argentinean Spanish" +msgstr "ספרדית ארגנטינאית - Argentinean Spanish" + +#: conf/global_settings.py:50 +msgid "Finnish" +msgstr "פינית - Finnish" + +#: conf/global_settings.py:51 +msgid "French" +msgstr "צרפתית - French" + +#: conf/global_settings.py:52 +msgid "Galician" +msgstr "גאליצית - Galician" + +#: conf/global_settings.py:53 +msgid "Hungarian" +msgstr "הונגרית (Hungarian)" + +#: conf/global_settings.py:54 +msgid "Hebrew" +msgstr "עברית - Hebrew" + +#: conf/global_settings.py:55 +msgid "Icelandic" +msgstr "איסלנדית - Icelandic" + +#: conf/global_settings.py:56 +msgid "Italian" +msgstr "איטלקית - Italian" + +#: conf/global_settings.py:57 +msgid "Japanese" +msgstr "יפנית - Japanese" + +#: conf/global_settings.py:58 +msgid "Korean" +msgstr "קוריאנית - Korean" + +#: conf/global_settings.py:59 +msgid "Kannada" +msgstr "קנדה - Kannada" + +#: conf/global_settings.py:60 +msgid "Latvian" +msgstr "לטבית - Latvian" + +#: conf/global_settings.py:61 +msgid "Macedonian" +msgstr "מקדונית - Macedonian" + +#: conf/global_settings.py:62 +msgid "Dutch" +msgstr "הולנדית - Dutch" + +#: conf/global_settings.py:63 +msgid "Norwegian" +msgstr "נורווגית - Norwegian" + +#: conf/global_settings.py:64 +msgid "Polish" +msgstr "פולנית - Polish" + +#: conf/global_settings.py:65 +msgid "Portugese" +msgstr "פורטוגזית - Portugese" + +#: conf/global_settings.py:66 +msgid "Brazilian" +msgstr "ברזילאית - Brazilian" + +#: conf/global_settings.py:67 +msgid "Romanian" +msgstr "רומנית - Romanian" + +#: conf/global_settings.py:68 +msgid "Russian" +msgstr "רוסית - Russian" + +#: conf/global_settings.py:69 +msgid "Slovak" +msgstr "סלובקית - Slovak" + +#: conf/global_settings.py:70 +msgid "Slovenian" +msgstr "סלובנית - Slovenian" + +#: conf/global_settings.py:71 +msgid "Serbian" +msgstr "סרבית - Serbian" + +#: conf/global_settings.py:72 +msgid "Swedish" +msgstr "שוודית - Swedish" + +#: conf/global_settings.py:73 +msgid "Tamil" +msgstr "" + +#: conf/global_settings.py:74 +msgid "Telugu" +msgstr "" + +#: conf/global_settings.py:75 +msgid "Turkish" +msgstr "טורקית - Turkish" + +#: conf/global_settings.py:76 +msgid "Ukrainian" +msgstr "אוקראינית - Ukrainian" + +#: conf/global_settings.py:77 +msgid "Simplified Chinese" +msgstr "סינית פשוטה - Simplified·Chinese" + +#: conf/global_settings.py:78 +msgid "Traditional Chinese" +msgstr "סינית מסורתית - Traditional·Chinese" + +#: template/defaultfilters.py:491 +msgid "yes,no,maybe" +msgstr "כן,לא,אולי" + +#: template/defaultfilters.py:520 #, python-format -msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." -msgid_plural "" -"Please enter valid %(self)s IDs. The values %(value)r are invalid." -msgstr[0] "נא להזין זיהוי %(self)s חוקי. הערך %(value)r אינו חוקי." -msgstr[1] "" -"נא להזין זיהויי %(self)s חוקיים. הערכים %(value)r אינם חוקיים." +msgid "%(size)d byte" +msgstr "%(size)d בתים" -#: core/validators.py:63 +#: template/defaultfilters.py:522 +#, python-format +msgid "%.1f KB" +msgstr "%.1f KB" + +#: template/defaultfilters.py:524 +#, python-format +msgid "%.1f MB" +msgstr "%.1f MB" + +#: template/defaultfilters.py:525 +#, python-format +msgid "%.1f GB" +msgstr "%.1f GB" + +#: 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 נמחק." + +#: oldforms/__init__.py:392 +#, python-format +msgid "Ensure your text is less than %s character." +msgstr "נא לוודא שהטקסט שלך מכיל פחות מ %s תו." + +#: oldforms/__init__.py:397 +msgid "Line breaks are not allowed here." +msgstr "מעברי שורה אסורים כאן." + +#: oldforms/__init__.py:498 oldforms/__init__.py:571 oldforms/__init__.py:610 +#, python-format +msgid "Select a valid choice; '%(data)s' is not in %(choices)s." +msgstr "יש לבחור אפשרות חוקית; '%(data)s' אינו בין %(choices)s." + +#: oldforms/__init__.py: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 "הקובץ שנשלח ריק." + +#: oldforms/__init__.py:730 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "חש להזין מספר שלם בין ‎-32,768 ל- 32,767." + +#: oldforms/__init__.py:740 +msgid "Enter a positive number." +msgstr "יש להזין מספר חיובי." + +#: oldforms/__init__.py:750 +msgid "Enter a whole number between 0 and 32,767." +msgstr "יש להזין מספר שלם בין 0 ל- 32,767." + +#: core/validators.py:64 msgid "This value must contain only letters, numbers and underscores." msgstr "ערך זה חייב להכיל אותיות, ספרות וקווים תחתונים בלבד." -#: core/validators.py:67 +#: core/validators.py:68 msgid "" "This value must contain only letters, numbers, underscores, dashes or " "slashes." msgstr "ערך זה חייב להכיל אותיות, ספרות, מקפים, קווים תחתונים ונטויים בלבד." -#: core/validators.py:75 +#: core/validators.py:72 +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "ערך זה חייב להכיל אותיות, ספרות, מקפים וקווים תחתונים בלבד." + +#: core/validators.py:76 msgid "Uppercase letters are not allowed here." msgstr "אסור להשתמש באותיות גדולות." -#: core/validators.py:79 +#: core/validators.py:80 msgid "Lowercase letters are not allowed here." msgstr "אסור להשתמש באותיות קטנות." -#: core/validators.py:86 +#: core/validators.py:87 msgid "Enter only digits separated by commas." msgstr "יש להזין רק ספרות מופרדות בפסיקים." -#: core/validators.py:98 +#: core/validators.py:99 msgid "Enter valid e-mail addresses separated by commas." msgstr "יש להזין רק כתובות דוא\"ל מופרדות בפסיקים." -#: core/validators.py:102 +#: core/validators.py:103 msgid "Please enter a valid IP address." msgstr "נא להזין כתובת IP חוקית." -#: core/validators.py:106 +#: core/validators.py:107 msgid "Empty values are not allowed here." msgstr "חובה להזין ערך בשדה זה." -#: core/validators.py:110 +#: core/validators.py:111 msgid "Non-numeric characters aren't allowed here." msgstr "מותר להזין ספרות בלבד." -#: core/validators.py:114 +#: core/validators.py:115 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 +#: core/validators.py:124 msgid "Only alphabetical characters are allowed here." msgstr "יש להזין כאן אותיות בלבד." -#: core/validators.py:127 -msgid "Enter a valid date in YYYY-MM-DD format." -msgstr "יש להזין תאריך במבנה YYYY-MM-DD." +#: core/validators.py:139 +msgid "Year must be 1900 or later." +msgstr "שנה צריכה להיות 1900 ומעלה." -#: core/validators.py:131 +#: core/validators.py:143 +#, python-format +msgid "Invalid date: %s" +msgstr "תאריך שגוי: %s" + +#: core/validators.py:153 msgid "Enter a valid time in HH:MM format." msgstr "יש להזין שעה במבנה HH:MM." -#: core/validators.py:139 -msgid "Enter a valid e-mail address." -msgstr "יש להזין כתובת דוא\"ל חוקית." - -#: core/validators.py:155 +#: core/validators.py:178 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "נא להעלות תמונה חוקית. הקובץ שהעלת אינו תמונה אומכיל תמונה מקולקלת." -#: core/validators.py:162 +#: core/validators.py:185 #, python-format msgid "The URL %s does not point to a valid image." msgstr "ה-URL %s אנו מצביע לתמונה חוקית." -#: core/validators.py:166 +#: core/validators.py:189 #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." msgstr "מספרי טלפון חייבים להיות במבנה XXX-XXX-XXXX.‏ \"%s\" אינו חוקי." -#: core/validators.py:174 +#: core/validators.py:197 #, python-format msgid "The URL %s does not point to a valid QuickTime video." msgstr "ה-URL‏ %s אינו מצביע לסרטון QuickTime חוקי." -#: core/validators.py:178 +#: core/validators.py:201 msgid "A valid URL is required." msgstr "יש להזין URL חוקי." -#: core/validators.py:192 +#: core/validators.py:215 #, python-format msgid "" "Valid HTML is required. Specific errors are:\n" @@ -418,123 +732,141 @@ msgstr "" "יש להזין HTML חוקי. שגיאות ספציפיות:\n" "%s" -#: core/validators.py:199 +#: core/validators.py:222 #, python-format msgid "Badly formed XML: %s" msgstr "מבנה XML שגוי: %s" -#: core/validators.py:209 +#: core/validators.py:239 #, python-format msgid "Invalid URL: %s" msgstr "URL שגוי: %s" -#: core/validators.py:213 core/validators.py:215 +#: core/validators.py:244 core/validators.py:246 #, python-format msgid "The URL %s is a broken link." msgstr "ה-URL‏ %s הוא קישור שבור." -#: core/validators.py:221 +#: core/validators.py:252 msgid "Enter a valid U.S. state abbreviation." msgstr "יש להזין קיצור חוקי למדינה בארה\"ב." -#: core/validators.py:236 +#: 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 אסורה לשימוש כאן." -msgstr[1] "שמור על לשונך! המילים %s אסורות לשימוש כאן." +msgstr "שמור על לשונך! המילה %s אסורה לשימוש כאן." -#: core/validators.py:243 +#: core/validators.py:273 #, python-format msgid "This field must match the '%s' field." msgstr "תוכן השדה חייב להיות זהה לשדה '%s'." -#: core/validators.py:262 +#: core/validators.py:292 msgid "Please enter something for at least one field." msgstr "יש להזין תוכן בלפחות אחד מהשדות." -#: core/validators.py:271 core/validators.py:282 +#: core/validators.py:301 core/validators.py:312 msgid "Please enter both fields or leave them both empty." msgstr "יש להזין תוכן בשני השדות או להשאיר את שניהם ריקים." -#: core/validators.py:289 +#: core/validators.py:320 #, python-format msgid "This field must be given if %(field)s is %(value)s" msgstr "יש להזין מידע בשדה זה אם שדה %(field)s מכיל %(value)s" -#: core/validators.py:301 +#: core/validators.py:333 #, python-format msgid "This field must be given if %(field)s is not %(value)s" msgstr "יש להזין תוכן בשדה זה אם תוכן שדה %(field)s אינו %(value)s" -#: core/validators.py:320 +#: core/validators.py:352 msgid "Duplicate values are not allowed." msgstr "לא ניתן להזין ערכים כפולים." -#: core/validators.py:343 +#: core/validators.py:367 +#, python-format +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "ערך זה חייב להיות בין %(lower)s ל-%(upper)s." + +#: core/validators.py:369 +#, python-format +msgid "This value must be at least %s." +msgstr "ערך זה חייב להיות לפחות %s." + +#: core/validators.py:371 +#, python-format +msgid "This value must be no more than %s." +msgstr "ערך זה אינו יכול להיות יותר מ-%s." + +#: core/validators.py:407 #, python-format msgid "This value must be a power of %s." msgstr "ערך זה חייב להיות חזקה של %s." -#: core/validators.py:354 +#: core/validators.py:418 msgid "Please enter a valid decimal number." msgstr "יש להזין מספר עשרוני חוקי." -#: core/validators.py:356 +#: core/validators.py:422 #, python-format msgid "Please enter a valid decimal number with at most %s total digit." -msgid_plural "" "Please enter a valid decimal number with at most %s total digits." -msgstr[0] "נא להזין מספר עשרוני חוקי עם %s ספרה לכל היותר." -msgstr[1] "" -"נא להזין מספר עשרוני חוקי עם %s ספרות לכל היותר." +msgstr "נא להזין מספר עשרוני חוקי עם %s ספרה לכל היותר." +"נא להזין מספר עשורני חוקי עם %s ספרות לכל היותר." -#: core/validators.py:359 +#: core/validators.py:425 +#, python-format +msgid "" +"Please enter a valid decimal number with a whole part of at most %s digit." +"Please enter a valid decimal number with a whole part of at most %s digits." +msgstr "" +"נא להזין מספר עשרוני המכיל מספר שלם עם %s ספרה לכל היותר." +"נא להזין מספר עשרוני המכיל מספר שלם עם %s ספרות לכל היותר." + +#: core/validators.py:428 #, python-format msgid "Please enter a valid decimal number with at most %s decimal place." -msgid_plural "" "Please enter a valid decimal number with at most %s decimal places." -msgstr[0] "נא להזין מספר עשרוני חוקי עם %s ספרה אחרי הנקודה לכל היותר." -msgstr[1] "" -"נא להזין מספר עשרוני חוקי עם %s ספרות אחרי הנקודה לכל היותר." +msgstr "נא להזין מספר עשרוני חוקי בעל %s ספרה לכל היותר במקום העשרוני." +"נא להזין מספר עשרוני חוקי בעל %s ספרות לכל היותר במקום העשרוני." -#: core/validators.py:369 +#: core/validators.py:438 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." msgstr "יש להעלות קובץ בגודל %s בתים לפחות." -#: core/validators.py:370 +#: core/validators.py:439 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." msgstr "יש לוודא שהקובץ שהעלת הוא בגודל %s בתים לכל היותר." -#: core/validators.py:387 +#: core/validators.py:456 msgid "The format for this field is wrong." msgstr "מבנה תוכן שדה זה שגוי." -#: core/validators.py:402 +#: core/validators.py:471 msgid "This field is invalid." msgstr "שדה זה אינו חוקי." -#: core/validators.py:438 +#: core/validators.py:507 #, python-format msgid "Could not retrieve anything from %s." msgstr "לא ניתן לאחזר כלום מ %s." -#: core/validators.py:441 +#: core/validators.py:510 #, python-format msgid "" "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." msgstr "ה-URL·%(url)s·החזיר כותרת·Content-Type·לא חוקית·'%(contenttype)s'." -#: core/validators.py:474 +#: core/validators.py:543 #, python-format msgid "" "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " "\"%(start)s\".)" msgstr "נא לסגור את תג·%(tag)s·בשורה·%(line)s.·(השורה מתחילה ב·\"%(start)s\".)" -#: core/validators.py:478 +#: core/validators.py:547 #, python-format msgid "" "Some text starting on line %(line)s is not allowed in that context. (Line " @@ -542,7 +874,7 @@ msgid "" msgstr "" "חלק מהטקסט בשורה·%(line)s·אסור בהקשר זה.·(השורה·מתחילה ב·\"%(start)s\".)" -#: core/validators.py:483 +#: core/validators.py:552 #, python-format msgid "" "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" @@ -550,7 +882,7 @@ msgid "" msgstr "" "\"%(attr)s\"·בשורה·%(line)s·אינה תכונה חוקית.·(השורה מתחילה ב·\"%(start)s\".)" -#: core/validators.py:488 +#: core/validators.py:557 #, python-format msgid "" "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" @@ -558,16 +890,16 @@ msgid "" msgstr "" "\"<%(tag)s>\"·בשורה·%(line)s·אינו תג חוקי.·(השורה מתחילה ב·\"%(start)s\".)" -#: core/validators.py:492 +#: 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 "" -"לתג בשורה %(line)s חסרה תכונה אחת או יותר נדרשות. (השורה מתחילה ב-\"%" -"(start)s\".)" +"לתג בשורה %(line)s חסרה תכונה אחת או יותר נדרשות. (השורה מתחילה ב-\"%(start)s" +"\".)" -#: core/validators.py:497 +#: core/validators.py:566 #, python-format msgid "" "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " @@ -576,138 +908,6 @@ msgstr "" "לתכונה·\"%(attr)s\"·בשורה·%(line)s·יש ערך לא חוקי.·(השורה·מתחילה ב·\"%(start)" "s\".)" -#: conf/global_settings.py:37 -msgid "Bengali" -msgstr "בנגאלית - Bengali" - -#: conf/global_settings.py:38 -msgid "Czech" -msgstr "צ'כית - Czech" - -#: conf/global_settings.py:39 -msgid "Welsh" -msgstr "וולשית - Welsh" - -#: conf/global_settings.py:40 -msgid "Danish" -msgstr "דנית - Danish" - -#: conf/global_settings.py:41 -msgid "German" -msgstr "גרמנית - German" - -#: conf/global_settings.py:42 -msgid "Greek" -msgstr "יוונית - Greek" - -#: conf/global_settings.py:43 -msgid "English" -msgstr "אנגלית - English" - -#: conf/global_settings.py:44 -msgid "Spanish" -msgstr "ספרדית - Spanish" - -#: conf/global_settings.py:45 -msgid "Argentinean Spanish" -msgstr "ספרדית ארגנטינאית - Argentinean Spanish" - -#: conf/global_settings.py:46 -msgid "French" -msgstr "צרפתית - French" - -#: conf/global_settings.py:47 -msgid "Galician" -msgstr "גאליצית - Galician" - -#: conf/global_settings.py:48 -msgid "Hungarian" -msgstr "הונגרית (Hungarian)" - -#: conf/global_settings.py:49 -msgid "Hebrew" -msgstr "עברית - Hebrew" - -#: conf/global_settings.py:50 -msgid "Icelandic" -msgstr "איסלנדית - Icelandic" - -#: conf/global_settings.py:51 -msgid "Italian" -msgstr "איטלקית - Italian" - -#: conf/global_settings.py:52 -msgid "Japanese" -msgstr "יפנית - Japanese" - -#: conf/global_settings.py:53 -msgid "Dutch" -msgstr "הולנדית - Dutch" - -#: conf/global_settings.py:54 -msgid "Norwegian" -msgstr "נורווגית - Norwegian" - -#: conf/global_settings.py:55 -msgid "Brazilian" -msgstr "ברזילאית - Brazilian" - -#: conf/global_settings.py:56 -msgid "Romanian" -msgstr "רומנית - Romanian" - -#: conf/global_settings.py:57 -msgid "Russian" -msgstr "רוסית - Russian" - -#: conf/global_settings.py:58 -msgid "Slovak" -msgstr "סלובקית - Slovak" - -#: conf/global_settings.py:59 -msgid "Slovenian" -msgstr "סלובנית - Slovenian" - -#: conf/global_settings.py:60 -msgid "Serbian" -msgstr "סרבית - Serbian" - -#: conf/global_settings.py:61 -msgid "Swedish" -msgstr "שוודית - Swedish" - -#: conf/global_settings.py:62 -msgid "Ukrainian" -msgstr "אוקראינית - Ukrainian" - -#: conf/global_settings.py:63 -msgid "Simplified Chinese" -msgstr "סינית פשוטה - Simplified·Chinese" - -#: conf/global_settings.py:64 -msgid "Traditional Chinese" -msgstr "סינית מסורתית - Traditional·Chinese" - -#: contrib/sessions/models.py:35 -msgid "session key" -msgstr "מפתח התחברות (session key)" - -#: contrib/sessions/models.py:36 -msgid "session data" -msgstr "מידע התחברות (session data)" - -#: contrib/sessions/models.py:37 -msgid "expire date" -msgstr "תאריך פג תוקף" - -#: contrib/sessions/models.py:41 -msgid "session" -msgstr "התחברות" - -#: contrib/sessions/models.py:42 -msgid "sessions" -msgstr "התחברויות" - #: contrib/sites/models.py:10 msgid "domain name" msgstr "שם מתחם" @@ -724,18 +924,6 @@ msgstr "אתר" msgid "sites" msgstr "אתרים" -#: contrib/contenttypes/models.py:25 -msgid "python model class name" -msgstr "שם ה-class של מודל פייתון" - -#: contrib/contenttypes/models.py:28 -msgid "content type" -msgstr "סוג תוכן" - -#: contrib/contenttypes/models.py:29 -msgid "content types" -msgstr "סוגי תוכן" - #: contrib/comments/models.py:67 contrib/comments/models.py:166 msgid "object ID" msgstr "מזהה אובייקט" @@ -793,7 +981,7 @@ msgstr "תאריך/שעת הגשה" msgid "is public" msgstr "ציבורי" -#: contrib/comments/models.py:85 contrib/admin/views/doc.py:292 +#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304 msgid "IP address" msgstr "כתובת IP" @@ -917,103 +1105,31 @@ msgstr "מחיקות מודרטור" msgid "Moderator deletion by %r" msgstr "מחיקת מודרציה ע\"י %r" -#: contrib/comments/templates/comments/freeform.html:4 -msgid "Your name:" -msgstr "שמך:" - -#: contrib/comments/templates/comments/freeform.html:5 -#: contrib/comments/templates/comments/form.html:27 -msgid "Comment:" -msgstr "תגובה:" - -#: contrib/comments/templates/comments/freeform.html:9 -#: contrib/comments/templates/comments/form.html:32 -msgid "Preview comment" -msgstr "תצוגה מקדימה של התגובה" - -#: contrib/comments/templates/comments/form.html:6 -#: contrib/comments/templates/comments/form.html:8 -#: contrib/admin/templates/admin/login.html:17 -msgid "Username:" -msgstr "שם משתמש:" - -#: contrib/comments/templates/comments/form.html:6 -#: contrib/admin/templates/admin/login.html:20 -msgid "Password:" -msgstr "סיסמה:" - -#: contrib/comments/templates/comments/form.html:6 -msgid "Forgotten your password?" -msgstr "שכחת את סיסמתך ?" - -#: contrib/comments/templates/comments/form.html:8 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 -#: contrib/admin/templates/admin_doc/view_index.html:5 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 -#: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/missing_docutils.html:4 -#: contrib/admin/templates/admin_doc/model_detail.html:3 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 -#: contrib/admin/templates/admin_doc/model_index.html:5 -#: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/admin_doc/index.html:4 -#: contrib/admin/templates/admin/base.html:24 -#: 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/change_list.html:5 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/registration/password_change_done.html:3 -msgid "Log out" -msgstr "יציאה" - -#: contrib/comments/templates/comments/form.html: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/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 "הדירוג נדרש מאחר והזנת לפחות דרוג אחד אחר." -#: 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[0] "" -"התגובה נשלחה ע\"י משתמש אשר שלח פחות מ-%(count)s " -"תגובה:\n" +msgstr "" +"התגובה נשלחה ע\"י משתמש אשר שלח פחות מ-%(count)s תגובה:\n" "\n" "%(text)s" -msgstr[1] "" -"התגובה נשלחה ע\"י משתמש אשר שלח פחות מ-%(count)s " -"תגובות:\n" +"התגובה נשלחה ע\"י משתמש אשר שלח פחות מ-%(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" @@ -1024,22 +1140,22 @@ 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 "רק פעולות 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 "מישהו התעסק עם טופס התגובה (הפרת אבטחה)" -#: 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 " @@ -1063,51 +1179,141 @@ msgstr "מזהה תגובה שגוי" msgid "No voting for yourself" msgstr "לא ניתן להצביע לעצמך" -#: contrib/admin/filterspecs.py:40 +#: contrib/comments/templates/comments/form.html:6 +#: contrib/comments/templates/comments/form.html:8 +#: contrib/admin/templates/admin/login.html:17 +msgid "Username:" +msgstr "שם משתמש:" + +#: contrib/comments/templates/comments/form.html:6 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/change_list.html:5 +#: 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 +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/humanize/templatetags/humanize.py:17 +msgid "th" +msgstr "רביעי" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "st" +msgstr "ראשון" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "nd" +msgstr "שני" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "rd" +msgstr "שלישי" + +#: contrib/humanize/templatetags/humanize.py:47 #, python-format -msgid "" -"

        By %s:

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

          ע\"י %s:

          \n" -"
            \n" +msgid "%(value).1f million" +msgstr "%(value).1f מיליון" -#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88 -#: contrib/admin/filterspecs.py:143 -msgid "All" -msgstr "הכל" +#: contrib/humanize/templatetags/humanize.py:50 +#, python-format +msgid "%(value).1f billion" +msgstr "%(value).1f ביליון" -#: contrib/admin/filterspecs.py:109 -msgid "Any date" -msgstr "כל תאריך" +#: contrib/humanize/templatetags/humanize.py:53 +#, python-format +msgid "%(value).1f trillion" +msgstr "%(value).1f טריליון" -#: contrib/admin/filterspecs.py:110 -msgid "Today" -msgstr "היום" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "one" +msgstr "אחד" -#: contrib/admin/filterspecs.py:113 -msgid "Past 7 days" -msgstr "בשבוע האחרון" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "two" +msgstr "שניים" -#: contrib/admin/filterspecs.py:115 -msgid "This month" -msgstr "החודש" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "three" +msgstr "שלושה" -#: contrib/admin/filterspecs.py:117 -msgid "This year" -msgstr "השנה" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "four" +msgstr "ארבעה" -#: contrib/admin/filterspecs.py:143 -msgid "Yes" -msgstr "כן" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "five" +msgstr "חמישה" -#: contrib/admin/filterspecs.py:143 -msgid "No" -msgstr "לא" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "six" +msgstr "שישה" -#: contrib/admin/filterspecs.py:150 -msgid "Unknown" -msgstr "לא ידוע" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "seven" +msgstr "שבעה" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "eight" +msgstr "שמונה" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "nine" +msgstr "תשעה" #: contrib/admin/models.py:16 msgid "action time" @@ -1137,50 +1343,371 @@ msgstr "רישום יומן" msgid "log entries" msgstr "רישומי יומן" -#: contrib/admin/templatetags/admin_list.py:230 +#: contrib/admin/filterspecs.py:40 +#, python-format +msgid "" +"

            By %s:

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

              ע\"י %s:

              \n" +"
                \n" + +#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88 +#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169 +msgid "All" +msgstr "הכל" + +#: contrib/admin/filterspecs.py:109 +msgid "Any date" +msgstr "כל תאריך" + +#: contrib/admin/filterspecs.py:110 +msgid "Today" +msgstr "היום" + +#: contrib/admin/filterspecs.py:113 +msgid "Past 7 days" +msgstr "בשבוע האחרון" + +#: contrib/admin/filterspecs.py:115 +msgid "This month" +msgstr "החודש" + +#: contrib/admin/filterspecs.py:117 +msgid "This year" +msgstr "השנה" + +#: contrib/admin/templatetags/admin_list.py:247 msgid "All dates" msgstr "כל התאריכים" -#: contrib/admin/templates/widget/file.html:2 -msgid "Currently:" -msgstr "הנוכחי." +#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:60 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "" +"נא להזין שם משתמש וסיסמה נכונים. בשני השדות גודל האותיות האנגליות משנה." -#: contrib/admin/templates/widget/file.html:3 -msgid "Change:" -msgstr "שינוי:" +#: contrib/admin/views/decorators.py:24 +#: contrib/admin/templates/admin/login.html:25 +msgid "Log in" +msgstr "כניסה" -#: contrib/admin/templates/widget/date_time.html:3 -msgid "Date:" -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/templates/widget/date_time.html:4 -msgid "Time:" -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/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 "צפיה (view):" + +#: 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 %(name)r not found in app %(label)r" +msgstr "מודל %(name)r לא נמצא ביישום %(label)r" + +#: contrib/admin/views/doc.py:183 +#, python-format +msgid "the related `%(label)s.%(type)s` object" +msgstr "האובייקט `%(label)s.%(type)s` הקשור" + +#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205 +#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224 +msgid "model:" +msgstr "מודל:" + +#: contrib/admin/views/doc.py:214 +#, python-format +msgid "related `%(label)s.%(name)s` objects" +msgstr "אובייקטי `%(label)s.%(name)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 "Fields on %s objects" + +#: 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 "מחרוזת (עד %(maxlength)s תווים)" + +#: contrib/admin/views/doc.py:294 +msgid "Comma-separated integers" +msgstr "מספרים שלמים מופרדים בפסיקים" + +#: contrib/admin/views/doc.py:295 +msgid "Date (without time)" +msgstr "תאריך (ללא שעה)" + +#: contrib/admin/views/doc.py:296 +msgid "Date (with time)" +msgstr "תאריך (כולל שעה)" + +#: contrib/admin/views/doc.py:297 +msgid "E-mail address" +msgstr "כתובת דוא\"ל" + +#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299 +#: contrib/admin/views/doc.py:302 +msgid "File path" +msgstr "נתיב קובץ" + +#: contrib/admin/views/doc.py:300 +msgid "Decimal number" +msgstr "מספר עשרוני" + +#: contrib/admin/views/doc.py:306 +msgid "Boolean (Either True, False or None)" +msgstr "בוליאני (אמת, שקר או כלום)" + +#: 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 "URL" + +#: contrib/admin/views/doc.py:316 +msgid "U.S. state (two uppercase letters)" +msgstr "מדינה בארה\"ב (שתי אותיות גדולות)" + +#: contrib/admin/views/doc.py:317 +msgid "XML text" +msgstr "טקסט XML" + +#: contrib/admin/views/doc.py:343 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "לא נראה ש-%s הוא אובייקט urlpattern" + +#: contrib/admin/views/auth.py:19 contrib/admin/views/main.py:257 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "הוספת %(name)s \"%(obj)s\" בוצעה בהצלחה." + +#: contrib/admin/views/auth.py:24 contrib/admin/views/main.py:261 +#: contrib/admin/views/main.py:347 +msgid "You may edit it again below." +msgstr "ניתן לערוך שוב מתחת" + +#: contrib/admin/views/auth.py:30 +msgid "Add user" +msgstr "הוספת משתמש" + +#: contrib/admin/views/auth.py:57 +msgid "Password changed successfully." +msgstr "הסיסמה שונתה בהצלחה." + +#: contrib/admin/views/auth.py:64 +#, python-format +msgid "Change password: %s" +msgstr "שינוי סיסמה: %s" + +#: contrib/admin/views/main.py:223 +msgid "Site administration" +msgstr "ניהול אתר" + +#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356 +#, python-format +msgid "You may add another %s below." +msgstr "ניתן להוסיף %s נוסף מתחת." + +#: contrib/admin/views/main.py:289 +#, python-format +msgid "Add %s" +msgstr "הוספת %s" + +#: contrib/admin/views/main.py:335 +#, python-format +msgid "Added %s." +msgstr "%s התווסף." + +#: contrib/admin/views/main.py:337 +#, python-format +msgid "Changed %s." +msgstr "%s שונה." + +#: contrib/admin/views/main.py:339 +#, python-format +msgid "Deleted %s." +msgstr "%s נמחק." + +#: contrib/admin/views/main.py:342 +msgid "No fields changed." +msgstr "אף שדה לא השתנה." + +#: contrib/admin/views/main.py:345 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "שינוי %(name)s \"%(obj)s\" בוצע בהצלחה." + +#: contrib/admin/views/main.py:353 +#, python-format +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "הוספת %(name)s \"%(obj)s\" בוצעה בהצלחה. ניתן לערוך אותו שוב מתחת." + +#: contrib/admin/views/main.py:391 +#, python-format +msgid "Change %s" +msgstr "שינוי %s" + +#: contrib/admin/views/main.py:476 +#, python-format +msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +msgstr "אחד או יותר %(fieldname)s ב%(name)s: %(obj)s" + +#: contrib/admin/views/main.py:481 +#, python-format +msgid "One or more %(fieldname)s in %(name)s:" +msgstr "אחד או יותר %(fieldname)s ב%(name)s:" + +#: contrib/admin/views/main.py:514 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "מחיקת %(name)s \"%(obj)s\" בוצעה בהצלחה." + +#: contrib/admin/views/main.py:517 +msgid "Are you sure?" +msgstr "האם את/ה בטוח/ה ?" + +#: contrib/admin/views/main.py:539 +#, python-format +msgid "Change history: %s" +msgstr "היסטוריית שינוי: %s" + +#: contrib/admin/views/main.py:573 +#, python-format +msgid "Select %s" +msgstr "בחירת %s" + +#: contrib/admin/views/main.py:573 +#, python-format +msgid "Select %s to change" +msgstr "בחירת %s לשינוי" + +#: contrib/admin/views/main.py:768 +msgid "Database error" +msgstr "שגיאת בסיס נתונים" + +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/change_list.html:5 +#: 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 +msgid "Change password" +msgstr "שינוי סיסמה" #: contrib/admin/templates/admin_doc/bookmarklets.html:3 -#: contrib/admin/templates/admin/base.html:29 -#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/base.html:30 #: contrib/admin/templates/admin/change_form.html:13 #: contrib/admin/templates/admin/delete_confirmation.html:6 -#: contrib/admin/templates/admin/invalid_setup.html:4 #: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/admin/object_history.html:5 #: contrib/admin/templates/admin/change_list.html:6 -#: contrib/admin/templates/registration/password_change_form.html:4 -#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/admin/auth/user/change_password.html:12 +#: 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_reset_form.html:4 +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Home" msgstr "דף הבית" #: contrib/admin/templates/admin_doc/bookmarklets.html:3 -#: contrib/admin/templates/admin/base.html:24 -#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/base.html:25 #: contrib/admin/templates/admin/change_form.html:10 #: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/registration/password_change_form.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 msgid "Documentation" msgstr "תיעוד" @@ -1188,26 +1715,6 @@ msgstr "תיעוד" msgid "Bookmarklets" msgstr "ייסומניות" -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 -#: contrib/admin/templates/admin_doc/view_index.html:5 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 -#: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/missing_docutils.html:4 -#: contrib/admin/templates/admin_doc/model_detail.html:3 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 -#: contrib/admin/templates/admin_doc/model_index.html:5 -#: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/admin_doc/index.html:4 -#: contrib/admin/templates/admin/base.html:24 -#: 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/change_list.html:5 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/registration/password_change_done.html:3 -msgid "Change password" -msgstr "שינוי סיסמה" - #: contrib/admin/templates/admin_doc/bookmarklets.html:5 msgid "Documentation bookmarklets" msgstr "ייסומוניות תיעוד" @@ -1266,65 +1773,133 @@ msgstr "עריכת אובייקט זה (בחלון חדש)" msgid "As above, but opens the admin page in a new window." msgstr "כנ\"ל, אך דף הניהול ייפתח בחלון חדש." -#: contrib/admin/templates/admin/login.html:22 -msgid "Have you forgotten your password?" -msgstr "האם שכחת את הסיסמה שלך?" - -#: contrib/admin/templates/admin/login.html:25 -#: contrib/admin/views/decorators.py:23 -msgid "Log in" -msgstr "כניסה" - -#: contrib/admin/templates/admin/submit_line.html:3 -#: contrib/admin/templates/admin/delete_confirmation.html:9 -msgid "Delete" -msgstr "מחיקה" - -#: contrib/admin/templates/admin/submit_line.html:4 -msgid "Save as new" -msgstr "שמירה כחדש" - -#: contrib/admin/templates/admin/submit_line.html:5 -msgid "Save and add another" -msgstr "שמירה והוספת אחר" - -#: contrib/admin/templates/admin/submit_line.html:6 -msgid "Save and continue editing" -msgstr "שמירה והמשך עריכה" - -#: contrib/admin/templates/admin/submit_line.html:7 -msgid "Save" -msgstr "שמירה" - -#: contrib/admin/templates/admin/base.html:24 -msgid "Welcome," -msgstr "שלום" - #: contrib/admin/templates/admin/filters.html:4 msgid "Filter" msgstr "סינון" -#: contrib/admin/templates/admin/search_form.html:8 -msgid "Go" -msgstr "בצע" +#: contrib/admin/templates/admin/base.html:25 +msgid "Welcome," +msgstr "שלום" -#: contrib/admin/templates/admin/search_form.html:10 -#, python-format -msgid "1 result" -msgid_plural "%(counter)s results" -msgstr[0] "תוצאה אחת" -msgstr[1] "%(counter)s תוצאות" - -#: contrib/admin/templates/admin/search_form.html:10 -#, python-format -msgid "%(full_result_count)s total" -msgstr "%(full_result_count)s סה\"כ" +#: contrib/admin/templates/admin/change_form.html:15 +#: contrib/admin/templates/admin/index.html:28 +msgid "Add" +msgstr "הוספה" +#: contrib/admin/templates/admin/change_form.html:21 #: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/change_form.html:20 msgid "History" msgstr "היסטוריה" +#: contrib/admin/templates/admin/change_form.html:22 +msgid "View on site" +msgstr "צפיה באתר" + +#: contrib/admin/templates/admin/change_form.html:32 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +msgid "Please correct the error below." +msgstr "נא לתקן את השגיאה המופיעה מתחת." + +#: contrib/admin/templates/admin/change_form.html:50 +msgid "Ordering" +msgstr "מיון" + +#: contrib/admin/templates/admin/change_form.html:53 +msgid "Order:" +msgstr "מיון:" + +#: contrib/admin/templates/admin/delete_confirmation.html:9 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Delete" +msgstr "מחיקה" + +#: contrib/admin/templates/admin/delete_confirmation.html:14 +#, python-format +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" +msgstr "" +"מחיקת %(object_name)s '%(escaped_object)s' מצריכה מחיקת " +"אובייקטים מקושרים, אך לחשבון שלך אין הרשאות למחיקת" +"סוגי האובייקטים הבאים:" + +#: contrib/admin/templates/admin/delete_confirmation.html:21 +#, python-format +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" +msgstr "" +"האם ברצונך למחוק את %(object_name)s \"%(escaped_object)s\"? " +"כל הפריטים הקשורים הבאים יימחקו:" + +#: contrib/admin/templates/admin/delete_confirmation.html:26 +msgid "Yes, I'm sure" +msgstr "כן, אני בטוח/ה" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr " לפי %(filter_title)s " + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "שגיאת שרת" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "שגיאת שרת (500)" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "שגיאת שרת (500)" + +#: contrib/admin/templates/admin/500.html:10 +msgid "" +"There's been an error. It's been reported to the site administrators via e-" +"mail and should be fixed shortly. Thanks for your patience." +msgstr "" +"התרחשה שגיאה. היא דווחה למנהלי האתר בדוא\"ל ותתוקן בקרוב. תודה על סבלנותך." + +#: contrib/admin/templates/admin/index.html:17 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "מודלים זמינים ביישום %(name)s." + +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "%(name)s" +msgstr "%(name)s" + +#: contrib/admin/templates/admin/index.html:34 +msgid "Change" +msgstr "שינוי" + +#: contrib/admin/templates/admin/index.html:44 +msgid "You don't have permission to edit anything." +msgstr "אין לך הרשאות לעריכה" + +#: contrib/admin/templates/admin/index.html:52 +msgid "Recent Actions" +msgstr "פעולות אחרונות" + +#: contrib/admin/templates/admin/index.html:53 +msgid "My Actions" +msgstr "הפעולות שלי" + +#: contrib/admin/templates/admin/index.html:57 +msgid "None available" +msgstr "לא נמצאו" + +#: contrib/admin/templates/admin/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/object_history.html:18 msgid "Date/time" msgstr "תאריך/שעה" @@ -1348,40 +1923,21 @@ msgid "" msgstr "" "לאובייקט זה אין היסטוריית שינוי. כנראה לא השתמשו בממשק הניהול הזה להוספתו." -#: contrib/admin/templates/admin/change_form.html:15 -#: contrib/admin/templates/admin/index.html:28 -msgid "Add" -msgstr "הוספה" +#: contrib/admin/templates/admin/submit_line.html:4 +msgid "Save as new" +msgstr "שמירה כחדש" -#: contrib/admin/templates/admin/change_form.html:21 -msgid "View on site" -msgstr "צפיה באתר" +#: contrib/admin/templates/admin/submit_line.html:5 +msgid "Save and add another" +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/submit_line.html:6 +msgid "Save and continue editing" +msgstr "שמירה והמשך עריכה" -#: 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/base_site.html:4 -msgid "Django site admin" -msgstr "ניהול אתר Django" - -#: contrib/admin/templates/admin/base_site.html:7 -msgid "Django administration" -msgstr "ניהול Django" - -#: contrib/admin/templates/admin/pagination.html:10 -msgid "Show all" -msgstr "הצג הכל" +#: contrib/admin/templates/admin/submit_line.html:7 +msgid "Save" +msgstr "שמירה" #: contrib/admin/templates/admin/404.html:4 #: contrib/admin/templates/admin/404.html:8 @@ -1392,92 +1948,127 @@ msgstr "דף לא קיים" msgid "We're sorry, but the requested page could not be found." msgstr "אנו מצטערים, לא ניתן למצוא את הדף המבוקש." -#: contrib/admin/templates/admin/filter.html:2 +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Go" +msgstr "בצע" + +#: contrib/admin/templates/admin/search_form.html:10 #, python-format -msgid " By %(title)s " -msgstr " לפי %(title)s " +msgid "1 result" +msgstr "תוצאה אחת" -#: contrib/admin/templates/admin/delete_confirmation.html:14 +#: contrib/admin/templates/admin/search_form.html:10 #, python-format -msgid "" -"Deleting the %(object_name)s '%(object)s' would result in deleting related " -"objects, but your account doesn't have permission to delete the following " -"types of objects:" -msgstr "" -"מחיקת %(object_name)s '%(object)s' תמחק אובייקטים קשורים, אך לחשבון שלך אין " -"הרשאות למחיקת אובייקטים מהסוג הבא:" +msgid "%(full_result_count)s total" +msgstr "%(full_result_count)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:" -msgstr "" -"האם ברצונך למחוק את %(object_name)s·\"%(object)s\"? כלהפריטים הקשורים הבאים " -"יימחקו:" +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "הצג הכל" -#: contrib/admin/templates/admin/delete_confirmation.html:26 -msgid "Yes, I'm sure" -msgstr "כן, אני בטוח/ה" - -#: contrib/admin/templates/admin/invalid_setup.html:8 -msgid "" -"Something's wrong with your database installation. Make sure the appropriate " -"database tables have been created, and make sure the database is readable by " -"the appropriate user." -msgstr "" -"משהו שגוי בהתקנת בסיס הנתונים שלך. נא לוודא שנוצרו טבלאות בסיס הנתונים " -"המתאימות, ובסיס הנתונים ניתן לקריאה על ידי המשתמש המתאים." - -#: contrib/admin/templates/admin/index.html:17 -#, python-format -msgid "Models available in the %(name)s application." -msgstr "מודלים זמינים ביישום %(name)s." - -#: contrib/admin/templates/admin/index.html:34 -msgid "Change" -msgstr "שינוי" - -#: contrib/admin/templates/admin/index.html:44 -msgid "You don't have permission to edit anything." -msgstr "אין לך הרשאות לעריכה" - -#: contrib/admin/templates/admin/index.html:52 -msgid "Recent Actions" -msgstr "פעולות אחרונות" - -#: contrib/admin/templates/admin/index.html:53 -msgid "My Actions" -msgstr "הפעולות שלי" - -#: contrib/admin/templates/admin/index.html:57 -msgid "None available" -msgstr "לא נמצאו" - -#: contrib/admin/templates/admin/500.html:4 -msgid "Server error" -msgstr "שגיאת שרת" - -#: contrib/admin/templates/admin/500.html:6 -msgid "Server error (500)" -msgstr "שגיאת שרת (500)" - -#: contrib/admin/templates/admin/500.html:9 -msgid "Server Error (500)" -msgstr "שגיאת שרת (500)" - -#: contrib/admin/templates/admin/500.html:10 -msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." -msgstr "" -"התרחשה שגיאה. היא דווחה למנהלי האתר בדוא\"ל ותתוקן בקרוב. תודה על סבלנותך." - -#: contrib/admin/templates/admin/change_list.html:11 +#: contrib/admin/templates/admin/change_list.html:12 #, python-format msgid "Add %(name)s" msgstr "הוספת %(name)s" +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "ניהול אתר Django" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "ניהול Django" + +#: contrib/admin/templates/admin/auth/user/add_form.html:6 +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "ראשית יש להזין שם משתמש וסיסמה. לאחר מכן יהיה ביכולתך לערוך אפשרויות" +"נוספות עבור המשתמש" + +#: contrib/admin/templates/admin/auth/user/add_form.html:12 +msgid "Username" +msgstr "שם משתמש" + +#: contrib/admin/templates/admin/auth/user/add_form.html:18 +#: contrib/admin/templates/admin/auth/user/change_password.html:34 +msgid "Password" +msgstr "סיסמה" + +#: contrib/admin/templates/admin/auth/user/add_form.html:23 +#: contrib/admin/templates/admin/auth/user/change_password.html:39 +msgid "Password (again)" +msgstr "סיסמה (שוב)" + +#: contrib/admin/templates/admin/auth/user/add_form.html:24 +#: contrib/admin/templates/admin/auth/user/change_password.html:40 +msgid "Enter the same password as above, for verification." +msgstr "יש להזין את אותה סיסנה שוב,לאימות." + +#: contrib/admin/templates/admin/auth/user/change_password.html:28 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "יש להזין סיסמה חדשה עבור המשתמש %(username)s." + +#: contrib/admin/templates/widget/file.html:2 +msgid "Currently:" +msgstr "הנוכחי." + +#: contrib/admin/templates/widget/file.html:3 +msgid "Change:" +msgstr "שינוי:" + +#: contrib/admin/templates/widget/date_time.html:3 +msgid "Date:" +msgstr "תאריך:" + +#: contrib/admin/templates/widget/date_time.html:4 +msgid "Time:" +msgstr "שעה:" + +#: contrib/admin/templates/registration/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_reset_email.html:2 msgid "You're receiving this e-mail because you requested a password reset" msgstr "הודעה זו התקבלה כי ביקשת איפוס סיסמה" @@ -1509,13 +2100,22 @@ msgstr "תודה על השימוש באתר שלנו!" msgid "The %(site_name)s team" msgstr "צוות %(site_name)s" +#: contrib/admin/templates/registration/password_change_done.html:4 #: contrib/admin/templates/registration/password_change_form.html:4 #: contrib/admin/templates/registration/password_change_form.html:6 #: contrib/admin/templates/registration/password_change_form.html:10 -#: contrib/admin/templates/registration/password_change_done.html:4 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_change_form.html:12 msgid "" "Please enter your old password, for security's sake, and then enter your new " @@ -1540,262 +2140,712 @@ msgstr "אימות סיסמה:" msgid "Change my password" msgstr "שנה את סיסמתי" -#: contrib/admin/templates/registration/password_change_done.html:6 -#: contrib/admin/templates/registration/password_change_done.html:10 -msgid "Password change successful" -msgstr "הסיסמה שונתה בהצלחה" +#: contrib/localflavor/it/forms.py:16 +msgid "Enter a valid zip code." +msgstr "יש להזין מיקוד חוקי." -#: contrib/admin/templates/registration/password_change_done.html:12 -msgid "Your password was changed." -msgstr "סיסמתך שונתה." +#: contrib/localflavor/it/forms.py:41 +msgid "Enter a valid Social Security number." +msgstr "יש להזין מספר ביטוח לאומי חוקי." -#: contrib/admin/templates/registration/logged_out.html:8 -msgid "Thanks for spending some quality time with the Web site today." -msgstr "תודה על בילוי זמן איכות עם האתר." +#: contrib/localflavor/it/forms.py:68 +msgid "Enter a valid VAT number." +msgstr "יש להזין מספר מעמ חוקי" -#: contrib/admin/templates/registration/logged_out.html:10 -msgid "Log in again" -msgstr "התחבר/י שוב" +#: contrib/localflavor/us/forms.py:18 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "יש להזין מיקוד חוקי בתחביר XXXXX או XXXXX-XXXX." -#: contrib/admin/templates/registration/password_reset_done.html:4 -#: contrib/admin/templates/registration/password_reset_form.html:4 -#: contrib/admin/templates/registration/password_reset_form.html:6 -#: contrib/admin/templates/registration/password_reset_form.html:10 -msgid "Password reset" -msgstr "איפוס סיסמה" +#: contrib/localflavor/us/forms.py:51 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "יש להזין מספר ביטוח לאומי אמריקאי בתחביר XXX-XX-XXXX." -#: contrib/admin/templates/registration/password_reset_done.html:6 -#: contrib/admin/templates/registration/password_reset_done.html:10 -msgid "Password reset successful" -msgstr "הסיסמה אופסה בהצלחה" +#: contrib/localflavor/fr/forms.py:17 contrib/localflavor/fi/forms.py:14 +#: contrib/localflavor/de/forms.py:16 +msgid "Enter a zip code in the format XXXXX." +msgstr "יש להזין מיקוד בתחביר XXXXX." -#: contrib/admin/templates/registration/password_reset_done.html:12 +#: contrib/localflavor/ch/forms.py:18 contrib/localflavor/no/forms.py:15 +msgid "Enter a zip code in the format XXXX." +msgstr "יש להזין מיקוד בתחביר XXXX." + +#: contrib/localflavor/ch/forms.py:90 msgid "" -"We've e-mailed a new password to the e-mail address you submitted. You " -"should be receiving it shortly." +"Enter a valid Swiss identity or passport card number in X1234567<0 or " +"1234567890 format." msgstr "" -"שלחנו את הסיסמה החדשה לכתובת הדוא\"ל שהזנת. היא אמורה להתקבל תוך זמן קצר." +"יש להזין מספר זיהוי או דרכון שוויצרי בתחביר X1234567<0 או " +"1234567890." -#: contrib/admin/templates/registration/password_reset_form.html:12 +#: contrib/localflavor/ch/ch_states.py:5 +msgid "Aargau" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:6 +msgid "Appenzell Innerrhoden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:7 +msgid "Appenzell Ausserrhoden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:8 +msgid "Basel-Stadt" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:9 +msgid "Basel-Land" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:10 +msgid "Berne" +msgstr "ברן" + +#: contrib/localflavor/ch/ch_states.py:11 +msgid "Fribourg" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:12 +msgid "Geneva" +msgstr "ג'נבה" + +#: contrib/localflavor/ch/ch_states.py:13 +msgid "Glarus" +msgstr "גלרוס" + +#: contrib/localflavor/ch/ch_states.py:14 +msgid "Graubuenden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:15 +msgid "Jura" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:16 +msgid "Lucerne" +msgstr "לוצרן" + +#: contrib/localflavor/ch/ch_states.py:17 +msgid "Neuchatel" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:18 +msgid "Nidwalden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:19 +msgid "Obwalden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:20 +msgid "Schaffhausen" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:21 +msgid "Schwyz" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:22 +msgid "Solothurn" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:23 +msgid "St. Gallen" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:24 +msgid "Thurgau" +msgstr "Thurgau" + +#: contrib/localflavor/ch/ch_states.py:25 +msgid "Ticino" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:26 +msgid "Uri" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:27 +msgid "Valais" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:28 +msgid "Vaud" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:29 +msgid "Zug" +msgstr "צוג" + +#: contrib/localflavor/ch/ch_states.py:30 +msgid "Zurich" +msgstr "" + +#: contrib/localflavor/no/forms.py:36 +msgid "Enter a valid Norwegian social security number." +msgstr "יש להזין מספר ביטוח לאומי נורבגי חוקי." + +#: contrib/localflavor/br/forms.py:18 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "יש להזין מיקוד בתחביר XXXXX-XXX." + +#: contrib/localflavor/br/forms.py:30 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "מספרי טלפון חייבים להיות בתחביר XX-XXXX-XXXX." + +#: contrib/localflavor/br/forms.py:72 +msgid "This field requires only numbers." +msgstr "יש להזין רק ספרות בשדה זה." + +#: contrib/localflavor/br/forms.py:74 +msgid "This field requires at most 11 digits or 14 characters." +msgstr "שדה זה דורש 11 או 14 ספרות לכל היותר." + +#: contrib/localflavor/br/forms.py:84 +msgid "Invalid CPF number." +msgstr "מספר CPF לא חוקי" + +#: contrib/localflavor/br/forms.py:106 +msgid "This field requires at least 14 digits" +msgstr "שדה זה דורש לפחות 14 ספרות." + +#: contrib/localflavor/br/forms.py:116 +msgid "Invalid CNPJ number." +msgstr "מספר CNPJ לא חוקי" + +#: contrib/localflavor/uk/forms.py:18 +msgid "Enter a postcode. A space is required between the two postcode parts." +msgstr "יש להזין קוד דואר. נדרש רווח בין שני חלקי הקוד." + +#: contrib/localflavor/is_/forms.py:16 msgid "" -"Forgotten your password? Enter your e-mail address below, and we'll reset " -"your password and e-mail the new one to you." +"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." msgstr "" -"שכחת את סיסמתך ? נא להזין את כתובת הדוא\"ל מתחת, אנו נאפסאת הסיסמה ונשלח את " -"החדשה אליך." +"יש להזין מספר זיהוי איסלנדי חוקי. התחביר הוא XXXXXX-XXXX." -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "E-mail address:" -msgstr "כתובת דוא\"ל:" +#: contrib/localflavor/is_/forms.py:30 +msgid "The Icelandic identification number is not valid." +msgstr "" -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "Reset my password" -msgstr "אפס את סיסמתי" +#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45 +msgid "Enter a valid Finnish social security number." +msgstr "יש להזין מספר ביטוח לאומי פיני חוקי." -#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:289 -#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:297 -#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:300 -msgid "Integer" -msgstr "מספר שלם" +#: contrib/localflavor/cl/forms.py:21 +msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "יש להזין RUT צ'יליאני חוקי. התחביר הוא XX.XXX.XXX-X." -#: contrib/admin/views/doc.py:280 -msgid "Boolean (Either True or False)" -msgstr "בוליאני (אמת או שקר)" +#: contrib/localflavor/cl/forms.py:26 +msgid "Enter valid a Chilean RUT" +msgstr "יש להזין RUT צ'יליאני חוקי." -#: contrib/admin/views/doc.py:281 contrib/admin/views/doc.py:299 -#, python-format -msgid "String (up to %(maxlength)s)" -msgstr "מחרוזת (עד %(maxlength)s תווים)" +#: contrib/localflavor/au/forms.py:18 +msgid "Enter a 4 digit post code." +msgstr "יש להזין קוד דואר בן 4 ספרות." -#: contrib/admin/views/doc.py:282 -msgid "Comma-separated integers" -msgstr "מספרים שלמים מופרדים בפסיקים" +#: contrib/localflavor/de/forms.py:60 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "" +"יש להזין מספר זיהוי גרמני חוקי בתחביר XXXXXXXXXXX-XXXXXXX-XXXXXXX-X." -#: contrib/admin/views/doc.py:283 -msgid "Date (without time)" -msgstr "תאריך (ללא שעה)" +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "" -#: contrib/admin/views/doc.py:284 -msgid "Date (with time)" -msgstr "תאריך (כולל שעה)" +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "באווריה" -#: contrib/admin/views/doc.py:285 -msgid "E-mail address" +#: contrib/localflavor/de/de_states.py:7 +msgid "Berlin" +msgstr "ברלין" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "ברמן" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "המבורג" + +#: contrib/localflavor/de/de_states.py:11 +msgid "Hessen" +msgstr "הסה" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "" + +#: contrib/localflavor/jp/forms.py:21 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "יש להזין קוד דואר בתחביר XXXXXXX או XXX-XXXX." + +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:6 +msgid "Iwate" +msgstr "Iwate" + +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:16 +msgid "Tokyo" +msgstr "טוקיו" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" +msgstr "קיוטו" + +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" +msgstr "אוסקה" + +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +msgid "Shimane" +msgstr "Shimane" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +msgid "Kagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +msgid "Ehime" +msgstr "Ehime" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "נגסקי" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" +msgstr "אוקינאווה" + +#: contrib/sessions/models.py:68 +msgid "session key" +msgstr "מפתח התחברות (session key)" + +#: contrib/sessions/models.py:69 +msgid "session data" +msgstr "מידע התחברות (session data)" + +#: contrib/sessions/models.py:70 +msgid "expire date" +msgstr "תאריך פג תוקף" + +#: contrib/sessions/models.py:74 +msgid "session" +msgstr "התחברות" + +#: contrib/sessions/models.py:75 +msgid "sessions" +msgstr "התחברויות" + +#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 +msgid "The two password fields didn't match." +msgstr "שני שדות הסיסמה אינם זהים." + +#: contrib/auth/forms.py:25 +msgid "A user with that username already exists." +msgstr "משתמש עם שם משתמש זה קיים כבר" + +#: contrib/auth/forms.py:53 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "נראה שעוגיות לא מאופשרות בדפדפן שלך.הן נדרשות כדי להתחבר." + +#: contrib/auth/forms.py:62 +msgid "This account is inactive." +msgstr "חשבון זה אינו פעיל." + +#: contrib/auth/forms.py:85 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "כתובת דואר אלקטרוני זו אינה משוייכת למשתמש. בטוח שנרשמת ?" + +#: contrib/auth/forms.py:117 +msgid "The two 'new password' fields didn't match." +msgstr "שני שדות 'הסיסמה החדשה' אינם זהים." + +#: contrib/auth/forms.py:124 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "סיסמתך הישנה הוזנה בצורה השגויה. נא להזינה שוב." + +#: contrib/auth/models.py:44 contrib/auth/models.py:64 +msgid "name" +msgstr "שם" + +#: contrib/auth/models.py:46 +msgid "codename" +msgstr "שם קוד" + +#: contrib/auth/models.py:49 +msgid "permission" +msgstr "הרשאה" + +#: contrib/auth/models.py:50 contrib/auth/models.py:65 +msgid "permissions" +msgstr "הרשאות" + +#: contrib/auth/models.py:68 +msgid "group" +msgstr "קבוצה" + +#: contrib/auth/models.py:69 contrib/auth/models.py:109 +msgid "groups" +msgstr "קבוצות" + +#: contrib/auth/models.py:99 +msgid "username" +msgstr "שם משתמש" + +#: contrib/auth/models.py:99 +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "דורש 30 תווים או פחות. תווים אלפאנומריים בלבד (אותיות, ספרות וקווים תחתונים)." + +#: contrib/auth/models.py:100 +msgid "first name" +msgstr "שם פרטי" + +#: contrib/auth/models.py:101 +msgid "last name" +msgstr "שם משפחה" + +#: contrib/auth/models.py:102 +msgid "e-mail address" msgstr "כתובת דוא\"ל" -#: contrib/admin/views/doc.py:286 contrib/admin/views/doc.py:287 -#: contrib/admin/views/doc.py:290 -msgid "File path" -msgstr "נתיב קובץ" +#: contrib/auth/models.py:103 +msgid "password" +msgstr "סיסמה" -#: contrib/admin/views/doc.py:288 -msgid "Decimal number" -msgstr "מספר עשרוני" - -#: contrib/admin/views/doc.py:294 -msgid "Boolean (Either True, False or None)" -msgstr "בוליאני (אמת, שקר או כלום)" - -#: contrib/admin/views/doc.py:295 -msgid "Relation to parent model" -msgstr "יחס למודל אב" - -#: contrib/admin/views/doc.py:296 -msgid "Phone number" -msgstr "מספר טלפון" - -#: contrib/admin/views/doc.py:301 -msgid "Text" -msgstr "טקסט" - -#: contrib/admin/views/doc.py:302 -msgid "Time" -msgstr "זמן" - -#: contrib/admin/views/doc.py:303 contrib/flatpages/models.py:7 -msgid "URL" -msgstr "URL" - -#: contrib/admin/views/doc.py:304 -msgid "U.S. state (two uppercase letters)" -msgstr "מדינה בארה\"ב (שתי אותיות גדולות)" - -#: contrib/admin/views/doc.py:305 -msgid "XML text" -msgstr "טקסט XML" - -#: contrib/admin/views/main.py:226 -msgid "Site administration" -msgstr "ניהול אתר" - -#: contrib/admin/views/main.py:260 -#, python-format -msgid "The %(name)s \"%(obj)s\" was added successfully." -msgstr "הוספת %(name)s \"%(obj)s\" בוצעה בהצלחה." - -#: contrib/admin/views/main.py:264 contrib/admin/views/main.py:348 -msgid "You may edit it again below." -msgstr "ניתן לערוך שוב מתחת" - -#: contrib/admin/views/main.py:272 contrib/admin/views/main.py:357 -#, python-format -msgid "You may add another %s below." -msgstr "ניתן להוסיף %s נוסף מתחת." - -#: contrib/admin/views/main.py:290 -#, python-format -msgid "Add %s" -msgstr "הוספת %s" - -#: contrib/admin/views/main.py:336 -#, python-format -msgid "Added %s." -msgstr "%s התווסף." - -#: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338 -#: contrib/admin/views/main.py:340 -msgid "and" -msgstr "ו" - -#: contrib/admin/views/main.py:338 -#, python-format -msgid "Changed %s." -msgstr "%s שונה." - -#: contrib/admin/views/main.py:340 -#, python-format -msgid "Deleted %s." -msgstr "%s נמחק." - -#: contrib/admin/views/main.py:343 -msgid "No fields changed." -msgstr "אף שדה לא השתנה." - -#: contrib/admin/views/main.py:346 -#, python-format -msgid "The %(name)s \"%(obj)s\" was changed successfully." -msgstr "שינוי %(name)s \"%(obj)s\" בוצע בהצלחה." - -#: contrib/admin/views/main.py:354 -#, python-format +#: contrib/auth/models.py:103 msgid "" -"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." -msgstr "הוספת %(name)s \"%(obj)s\" בוצעה בהצלחה. ניתן לערוך אותו שוב מתחת." - -#: contrib/admin/views/main.py:392 -#, python-format -msgid "Change %s" -msgstr "שינוי %s" - -#: contrib/admin/views/main.py:470 -#, python-format -msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "אחד או יותר %(fieldname)s ב%(name)s: %(obj)s" - -#: contrib/admin/views/main.py:475 -#, python-format -msgid "One or more %(fieldname)s in %(name)s:" -msgstr "אחד או יותר %(fieldname)s ב%(name)s:" - -#: contrib/admin/views/main.py:508 -#, python-format -msgid "The %(name)s \"%(obj)s\" was deleted successfully." -msgstr "מחיקת %(name)s \"%(obj)s\" בוצעה בהצלחה." - -#: contrib/admin/views/main.py:511 -msgid "Are you sure?" -msgstr "האם את/ה בטוח/ה ?" - -#: contrib/admin/views/main.py:533 -#, python-format -msgid "Change history: %s" -msgstr "היסטוריית שינוי: %s" - -#: contrib/admin/views/main.py:567 -#, python-format -msgid "Select %s" -msgstr "בחירת %s" - -#: contrib/admin/views/main.py:567 -#, python-format -msgid "Select %s to change" -msgstr "בחירת %s לשינוי" - -#: contrib/admin/views/main.py:743 -msgid "Database error" -msgstr "שגיאת בסיס נתונים" - -#: contrib/admin/views/decorators.py:9 contrib/auth/forms.py:36 -#: contrib/auth/forms.py:43 -msgid "" -"Please enter a correct username and password. Note that both fields are case-" -"sensitive." +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." msgstr "" -"נא להזין שם משתמש וסיסמה נכונים. בשני השדות גודל האותיות האנגליות משנה." +"יש להזין '[algo]$[salt]$[hexdigest]' או להשתמש בטופס " +"שינוי הסיסמה." -#: contrib/admin/views/decorators.py:61 +#: contrib/auth/models.py:104 +msgid "staff status" +msgstr "סטטוס איש צוות" + +#: contrib/auth/models.py:104 +msgid "Designates whether the user can log into this admin site." +msgstr "מציין האם המשתמש יכול להתחבר לאתר הניהול." + +#: contrib/auth/models.py:105 +msgid "active" +msgstr "פעיל" + +#: contrib/auth/models.py:105 msgid "" -"Please log in again, because your session has expired. Don't worry: Your " -"submission has been saved." -msgstr "" -"נא להתחבר שוב, מאחר ופג תוקף ההתחברות הנוכחית. אל דאגה: המידע ששלחת נשמר." +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "מציין האם המשתמש יכול להתחבר לאתר הניהול. יש לבטל בחירה זו" +"במקום למחוק חשבונות משתמשים." -#: contrib/admin/views/decorators.py:68 +#: contrib/auth/models.py:106 +msgid "superuser status" +msgstr "סטטוס משתמש על" + +#: contrib/auth/models.py:106 msgid "" -"Looks like your browser isn't configured to accept cookies. Please enable " -"cookies, reload this page, and try again." +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "מציין שלמשתמש זה יש את כל ההרשאות ללא הצורך המפורש בהענקתן." + +#: contrib/auth/models.py:107 +msgid "last login" +msgstr "כניסה אחרונה" + +#: contrib/auth/models.py:108 +msgid "date joined" +msgstr "תאריך הצטרפות" + +#: contrib/auth/models.py:110 +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/admin/views/decorators.py:82 -msgid "Usernames cannot contain the '@' character." -msgstr "שם משתמש אינו יכול להכיל את התו '@'." +#: contrib/auth/models.py:111 +msgid "user permissions" +msgstr "הרשאות משתמש" -#: contrib/admin/views/decorators.py:84 -#, python-format -msgid "Your e-mail address is not your username. Try '%s' instead." -msgstr "כתובת הדוא\"ל שלך אינה שם המשתמש שלך. נסה/י '%s' במקום." +#: contrib/auth/models.py:115 +msgid "user" +msgstr "משתמש" + +#: contrib/auth/models.py:116 +msgid "users" +msgstr "משתמשים" + +#: contrib/auth/models.py:122 +msgid "Personal info" +msgstr "מידע אישי" + +#: contrib/auth/models.py:123 +msgid "Permissions" +msgstr "הרשאות" + +#: contrib/auth/models.py:124 +msgid "Important dates" +msgstr "תאריכים חשובים" + +#: contrib/auth/models.py:125 +msgid "Groups" +msgstr "קבוצות" + +#: contrib/auth/models.py:269 +msgid "message" +msgstr "הודעה" + +#: contrib/auth/models.py:282 +msgid "AnonymousUser" +msgstr "משתמש אנונימי" + +#: contrib/auth/views.py:40 +msgid "Logged out" +msgstr "יצאת מהמערכת" + +#: contrib/flatpages/models.py:8 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" +"לדוגמא: '/about/contact/'. יש לוודא הימצאות הקווים הנטויים בהתחלה ובסוף." + +#: contrib/flatpages/models.py:9 +msgid "title" +msgstr "כותרת" + +#: contrib/flatpages/models.py:10 +msgid "content" +msgstr "תוכן" + +#: contrib/flatpages/models.py:11 +msgid "enable comments" +msgstr "אפשר תגובות" + +#: contrib/flatpages/models.py:12 +msgid "template name" +msgstr "שם תבנית" + +#: contrib/flatpages/models.py:13 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" +"דוגמא: 'flatpages/contact_page.html'. אם זה לא צויין, המערכת " +"תשתמש ב-'flatpages/default.html'." + +#: contrib/flatpages/models.py:14 +msgid "registration required" +msgstr "הרשמה נדרשת" + +#: contrib/flatpages/models.py:14 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "אם זה מסומך, רק משתמשים מחוברים יוכלו לצפות בדף." + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "דף פשוט" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "דפים פשוטים" #: contrib/redirects/models.py:7 msgid "redirect from" @@ -1825,175 +2875,15 @@ msgstr "הפניה" msgid "redirects" msgstr "הפניות" -#: contrib/auth/forms.py:30 -msgid "" -"Your Web browser doesn't appear to have cookies enabled. Cookies are " -"required for logging in." -msgstr "נראה שעוגיות לא מאופשרות בדפדפן שלך.הן נדרשות כדי להתחבר." +#: contrib/contenttypes/models.py:36 +msgid "python model class name" +msgstr "שם ה-class של מודל פייתון" -#: contrib/auth/forms.py:45 -msgid "This account is inactive." -msgstr "חשבון זה אינו פעיל." +#: contrib/contenttypes/models.py:39 +msgid "content type" +msgstr "סוג תוכן" -#: contrib/auth/views.py:39 -msgid "Logged out" -msgstr "יצאת מהמערכת" - -#: contrib/auth/models.py:13 contrib/auth/models.py:26 -msgid "name" -msgstr "שם" - -#: contrib/auth/models.py:15 -msgid "codename" -msgstr "שם קוד" - -#: contrib/auth/models.py:17 -msgid "permission" -msgstr "הרשאה" - -#: contrib/auth/models.py:18 contrib/auth/models.py:27 -msgid "permissions" -msgstr "הרשאות" - -#: contrib/auth/models.py:29 -msgid "group" -msgstr "קבוצה" - -#: contrib/auth/models.py:30 contrib/auth/models.py:65 -msgid "groups" -msgstr "קבוצות" - -#: contrib/auth/models.py:55 -msgid "username" -msgstr "שם משתמש" - -#: contrib/auth/models.py:56 -msgid "first name" -msgstr "שם פרטי" - -#: contrib/auth/models.py:57 -msgid "last name" -msgstr "שם משפחה" - -#: contrib/auth/models.py:58 -msgid "e-mail address" -msgstr "כתובת דוא\"ל" - -#: contrib/auth/models.py:59 -msgid "password" -msgstr "סיסמה" - -#: contrib/auth/models.py:59 -msgid "Use '[algo]$[salt]$[hexdigest]'" -msgstr "השתמש ב '[algo]$[salt]$[hexdigest]'" - -#: contrib/auth/models.py:60 -msgid "staff status" -msgstr "סטטוס איש צוות" - -#: contrib/auth/models.py:60 -msgid "Designates whether the user can log into this admin site." -msgstr "מציין האם המשתמש יכול להתחבר לאתר הניהול." - -#: contrib/auth/models.py:61 -msgid "active" -msgstr "פעיל" - -#: contrib/auth/models.py:62 -msgid "superuser status" -msgstr "סטטוס משתמש על" - -#: contrib/auth/models.py:63 -msgid "last login" -msgstr "כניסה אחרונה" - -#: contrib/auth/models.py:64 -msgid "date joined" -msgstr "תאריך הצטרפות" - -#: contrib/auth/models.py:66 -msgid "" -"In addition to the permissions manually assigned, this user will also get " -"all permissions granted to each group he/she is in." -msgstr "" -"בנוסף לכל ההרשאות שהוקצו ידנית, יוענקו למשתמש גם כל ההרשאות של כל קבוצה " -"המשוייכת אליו." - -#: contrib/auth/models.py:67 -msgid "user permissions" -msgstr "הרשאות משתמש" - -#: contrib/auth/models.py:70 -msgid "user" -msgstr "משתמש" - -#: contrib/auth/models.py:71 -msgid "users" -msgstr "משתמשים" - -#: contrib/auth/models.py:76 -msgid "Personal info" -msgstr "מידע אישי" - -#: contrib/auth/models.py:77 -msgid "Permissions" -msgstr "הרשאות" - -#: contrib/auth/models.py:78 -msgid "Important dates" -msgstr "תאריכים חשובים" - -#: contrib/auth/models.py:79 -msgid "Groups" -msgstr "קבוצות" - -#: contrib/auth/models.py:219 -msgid "message" -msgstr "הודעה" - -#: contrib/flatpages/models.py:8 -msgid "" -"Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "" -"לדוגמא: '/about/contact/'. יש לוודא הימצאות הקווים הנטויים בהתחלה ובסוף." - -#: contrib/flatpages/models.py:9 -msgid "title" -msgstr "כותרת" - -#: contrib/flatpages/models.py:10 -msgid "content" -msgstr "תוכן" - -#: contrib/flatpages/models.py:11 -msgid "enable comments" -msgstr "אפשר תגובות" - -#: contrib/flatpages/models.py:12 -msgid "template name" -msgstr "שם תבנית" - -#: contrib/flatpages/models.py:13 -msgid "" -"Example: 'flatpages/contact_page'. If this isn't provided, the system will " -"use 'flatpages/default'." -msgstr "" -"דוגמא: 'flatpages/contact_page'. האם אינו קיים, המערכתתשתמש ב 'flatpages/" -"default'." - -#: 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/contenttypes/models.py:40 +msgid "content types" +msgstr "סוגי תוכן" diff --git a/django/conf/locale/he/LC_MESSAGES/djangojs.mo b/django/conf/locale/he/LC_MESSAGES/djangojs.mo index 2539598770..09ecd64d87 100644 Binary files a/django/conf/locale/he/LC_MESSAGES/djangojs.mo and b/django/conf/locale/he/LC_MESSAGES/djangojs.mo differ diff --git a/django/conf/locale/he/LC_MESSAGES/djangojs.po b/django/conf/locale/he/LC_MESSAGES/djangojs.po index 75b53dd8db..0f94f2ef09 100644 --- a/django/conf/locale/he/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/he/LC_MESSAGES/djangojs.po @@ -8,26 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: djangojs 1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-03-30 13:28+0200\n" -"PO-Revision-Date: 2006-03-30 13:35+0200\n" +"POT-Creation-Date: 2007-05-06 13:08+0300\n" +"PO-Revision-Date: 2007-05-06 13:08+0300\n" "Last-Translator: Meir Kriheli \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit" -#: contrib/admin/media/js/dateparse.js:32 -#: 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:33 -msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" -msgstr "ראשון שני שלישי רביעי חמישי שישי שבת" - #: contrib/admin/media/js/SelectFilter2.js:33 #, perl-format msgid "Available %s" @@ -58,54 +46,75 @@ msgstr "יש לסמן את ההרשאות המבוקשות וללחוץ על " msgid "Clear all" msgstr "איפוס הכל" +#: contrib/admin/media/js/calendar.js:24 +#: contrib/admin/media/js/dateparse.js:32 +msgid "" +"January February March April May June July August September October November " +"December" +msgstr "" +"ינואר פברואר מרץ אפריל מאי יוני יולי אוגוסט ספטמבר אוקטובר נובמבר דצמבר" + #: contrib/admin/media/js/calendar.js:25 msgid "S M T W T F S" msgstr "ר ש ש ר ח ש ש" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80 +#: contrib/admin/media/js/dateparse.js:33 +msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" +msgstr "ראשון שני שלישי רביעי חמישי שישי שבת" + +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34 +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72 +msgid "Show" +msgstr "הצג" + +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63 +msgid "Hide" +msgstr "הסתר" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 msgid "Now" msgstr "כעת" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51 msgid "Clock" msgstr "שעון" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78 msgid "Choose a time" msgstr "בחירת שעה" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 msgid "Midnight" msgstr "חצות" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 msgid "6 a.m." msgstr "6 בבוקר" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 msgid "Noon" msgstr "צהריים" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183 msgid "Cancel" msgstr "ביטול" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177 msgid "Today" msgstr "היום" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132 msgid "Calendar" msgstr "לוח שנה" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175 msgid "Yesterday" msgstr "אתמול" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179 msgid "Tomorrow" msgstr "מחר" diff --git a/django/conf/locale/it/LC_MESSAGES/django.mo b/django/conf/locale/it/LC_MESSAGES/django.mo index 821828383e..e0d5e0442d 100644 Binary files a/django/conf/locale/it/LC_MESSAGES/django.mo and b/django/conf/locale/it/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/it/LC_MESSAGES/django.po b/django/conf/locale/it/LC_MESSAGES/django.po index 66a4e09f88..2c9060a076 100644 --- a/django/conf/locale/it/LC_MESSAGES/django.po +++ b/django/conf/locale/it/LC_MESSAGES/django.po @@ -3,88 +3,19 @@ # Copyright (C) 2006 the Lawrence Journal-World # This file is distributed under the same license as the Django package. # -# Carlo C8E Miron , 2006. -# Nicola 'tekNico' Larosa , 2007. -# Nicola Larosa , 2007. msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-02-26 20:44+0100\n" +"POT-Creation-Date: 2007-04-11 17:39+0200\n" "PO-Revision-Date: 2007-03-14 19:29+0100\n" -"Last-Translator: Nicola Larosa \n" +"Last-Translator: Flavio Curella \n" +"Language-Team: Italiano\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.2\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Language-Team: Italiano\n" - -#: db/models/manipulators.py:307 -#, python-format -msgid "%(object)s with this %(type)s already exists for the given %(field)s." -msgstr "%(object)s·con questo·%(type)s·esiste già per questo·%(field)s." - -#: 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 "e" - -#: db/models/fields/related.py:53 -#, python-format -msgid "Please enter a valid %s." -msgstr "Inserire un %s valido." - -#: db/models/fields/related.py:642 -msgid "Separate multiple IDs with commas." -msgstr "Separare ID multipli con virgole." - -#: db/models/fields/related.py:644 -msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr "Tenere premuto \"Control\", o \"Command\" su Mac, per selezionarne più di uno." - -#: 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] "Inserire un ID validi per %(self)s. Il valore %(value)r non è valido." -msgstr[1] "Inserire un ID validi per %(self)s. I valori %(value)r non sono validi." - -#: db/models/fields/__init__.py:42 -#, python-format -msgid "%(optname)s with this %(fieldname)s already exists." -msgstr "%(optname)s·con questo·%(fieldname)s·esiste già." - -#: db/models/fields/__init__.py:116 db/models/fields/__init__.py:273 -#: db/models/fields/__init__.py:609 db/models/fields/__init__.py:620 -#: oldforms/__init__.py:352 newforms/fields.py:78 newforms/fields.py:374 -#: newforms/fields.py:450 newforms/fields.py:461 newforms/models.py:177 -msgid "This field is required." -msgstr "Questo campo è obbligatorio." - -#: db/models/fields/__init__.py:366 -msgid "This value must be an integer." -msgstr "Questo valore deve essere un intero." - -#: db/models/fields/__init__.py:401 -msgid "This value must be either True or False." -msgstr "Questo valore deve essere True o False." - -#: db/models/fields/__init__.py:422 -msgid "This field cannot be null." -msgstr "Questo campo non può essere nullo." - -#: db/models/fields/__init__.py:456 core/validators.py:147 -msgid "Enter a valid date in YYYY-MM-DD format." -msgstr "Inserire una data valida in formato AAAA-MM-GG." - -#: db/models/fields/__init__.py:525 core/validators.py:156 -msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." -msgstr "Inserire una data/ora valida in formato AAAA-MM-GG OO:MM." - -#: db/models/fields/__init__.py:629 -msgid "Enter a valid filename." -msgstr "Inserire un nome file valido." #: conf/global_settings.py:39 msgid "Arabic" @@ -163,568 +94,90 @@ msgid "Japanese" msgstr "Giapponese" #: conf/global_settings.py:58 +#, fuzzy +msgid "Korean" +msgstr "Norvegese" + +#: conf/global_settings.py:59 msgid "Kannada" msgstr "Kannada" -#: conf/global_settings.py:59 +#: conf/global_settings.py:60 msgid "Latvian" msgstr "Lettone" -#: conf/global_settings.py:60 +#: conf/global_settings.py:61 msgid "Macedonian" msgstr "Macedone" -#: conf/global_settings.py:61 +#: conf/global_settings.py:62 msgid "Dutch" msgstr "Olandese" -#: conf/global_settings.py:62 +#: conf/global_settings.py:63 msgid "Norwegian" msgstr "Norvegese" -#: conf/global_settings.py:63 +#: conf/global_settings.py:64 msgid "Polish" msgstr "Polacco" -#: conf/global_settings.py:64 +#: conf/global_settings.py:65 +msgid "Portugese" +msgstr "Portoghese" + +#: conf/global_settings.py:66 msgid "Brazilian" msgstr "Brasiliano" -#: conf/global_settings.py:65 +#: conf/global_settings.py:67 msgid "Romanian" msgstr "Rumeno" -#: conf/global_settings.py:66 +#: conf/global_settings.py:68 msgid "Russian" msgstr "Russo" -#: conf/global_settings.py:67 +#: conf/global_settings.py:69 msgid "Slovak" msgstr "Slovacco" -#: conf/global_settings.py:68 +#: conf/global_settings.py:70 msgid "Slovenian" msgstr "Sloveno" -#: conf/global_settings.py:69 +#: conf/global_settings.py:71 msgid "Serbian" msgstr "Serbo" -#: conf/global_settings.py:70 +#: conf/global_settings.py:72 msgid "Swedish" msgstr "Svedese" -#: conf/global_settings.py:71 +#: conf/global_settings.py:73 msgid "Tamil" msgstr "Tamil" -#: conf/global_settings.py:72 +#: conf/global_settings.py:74 +msgid "Telugu" +msgstr "" + +#: conf/global_settings.py:75 msgid "Turkish" msgstr "Turco" -#: conf/global_settings.py:73 +#: conf/global_settings.py:76 msgid "Ukrainian" msgstr "Ucraino" -#: conf/global_settings.py:74 +#: conf/global_settings.py:77 msgid "Simplified Chinese" msgstr "Cinese semplificato" -#: conf/global_settings.py:75 +#: conf/global_settings.py:78 msgid "Traditional Chinese" msgstr "Cinese tradizionale" -#: core/validators.py:64 -msgid "This value must contain only letters, numbers and underscores." -msgstr "Questo valore può contenere solo lettere, cifre e sottolineature." - -#: core/validators.py:68 -msgid "" -"This value must contain only letters, numbers, underscores, dashes or " -"slashes." -msgstr "" -"Questo valore può contenere solo lettere, cifre, sottolineature, trattini e " -"barre diagonali." - -#: core/validators.py:72 -msgid "This value must contain only letters, numbers, underscores or hyphens." -msgstr "Questo valore può contenere solo lettere, cifre, sottolineature e trattini." - -#: core/validators.py:76 -msgid "Uppercase letters are not allowed here." -msgstr "Non sono ammesse lettere maiuscole." - -#: core/validators.py:80 -msgid "Lowercase letters are not allowed here." -msgstr "Non sono ammesse lettere minuscole." - -#: core/validators.py:87 -msgid "Enter only digits separated by commas." -msgstr "Inserire solo cifre separate da virgole." - -#: core/validators.py:99 -msgid "Enter valid e-mail addresses separated by commas." -msgstr "Inserire indirizzi e-mail validi separati da virgole." - -#: core/validators.py:103 -msgid "Please enter a valid IP address." -msgstr "Inserire un indirizzo IP valido." - -#: core/validators.py:107 -msgid "Empty values are not allowed here." -msgstr "È necessario inserire un valore." - -#: core/validators.py:111 -msgid "Non-numeric characters aren't allowed here." -msgstr "Sono ammessi soltanto caratteri numerici." - -#: core/validators.py:115 -msgid "This value can't be comprised solely of digits." -msgstr "Questo valore non può essere composto solo da cifre." - -#: core/validators.py:120 newforms/fields.py:126 -msgid "Enter a whole number." -msgstr "Inserire un numero intero." - -#: core/validators.py:124 -msgid "Only alphabetical characters are allowed here." -msgstr "Sono ammessi solo caratteri alfabetici." - -#: core/validators.py:139 -msgid "Year must be 1900 or later." -msgstr "L'anno deve essere 1900 o successivo." - -#: core/validators.py:143 -#, python-format -msgid "Invalid date: %s." -msgstr "Data non valida: %s." - -#: core/validators.py:152 -msgid "Enter a valid time in HH:MM format." -msgstr "Inserire un orario valido in formato OO:MM." - -#: core/validators.py:161 newforms/fields.py:269 -msgid "Enter a valid e-mail address." -msgstr "Inserire un indirizzo e-mail valido." - -#: core/validators.py:173 core/validators.py:444 oldforms/__init__.py:667 -msgid "No file was submitted. Check the encoding type on the form." -msgstr "Non è stato inviato alcun file. Verificare il tipo di codifica della form." - -#: core/validators.py:177 -msgid "" -"Upload a valid image. The file you uploaded was either not an image or a " -"corrupted image." -msgstr "Caricare un'immagine valida. Il file caricato non è un'immagine o è corrotto." - -#: core/validators.py:184 -#, python-format -msgid "The URL %s does not point to a valid image." -msgstr "La URL %s non punta ad un'immagine valida." - -#: core/validators.py:188 -#, python-format -msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." -msgstr "I numeri di telefono devono essere in formato XXX-XXX-XXXX. \"%s\" non è valido." - -#: core/validators.py:196 -#, python-format -msgid "The URL %s does not point to a valid QuickTime video." -msgstr "La URL %s non punta ad un video QuickTime valido." - -#: core/validators.py:200 -msgid "A valid URL is required." -msgstr "Inserire una URL valida." - -#: core/validators.py:214 -#, python-format -msgid "" -"Valid HTML is required. Specific errors are:\n" -"%s" -msgstr "" -"È richiesto HTML valido. Gli errori sono i seguenti:\n" -"%s" - -#: core/validators.py:221 -#, python-format -msgid "Badly formed XML: %s" -msgstr "XML malformato: %s" - -#: core/validators.py:238 -#, python-format -msgid "Invalid URL: %s" -msgstr "URL non valida: %s" - -#: core/validators.py:243 core/validators.py:245 -#, python-format -msgid "The URL %s is a broken link." -msgstr "La URL %s è un link non funzionante." - -#: core/validators.py:251 -msgid "Enter a valid U.S. state abbreviation." -msgstr "Inserire un valido nome di stato USA abbreviato." - -#: core/validators.py:265 -#, 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] "Moderare i termini: la parola %s non è ammessa." -msgstr[1] "Moderare i termini: le parole %s non sono ammesse." - -#: core/validators.py:272 -#, python-format -msgid "This field must match the '%s' field." -msgstr "Questo campo deve corrispondere al campo '%s'." - -#: core/validators.py:291 -msgid "Please enter something for at least one field." -msgstr "Inserire qualcosa in almeno un campo." - -#: core/validators.py:300 core/validators.py:311 -msgid "Please enter both fields or leave them both empty." -msgstr "Inserire entrambi i campi o lasciarli entrambi vuoti." - -#: core/validators.py:319 -#, python-format -msgid "This field must be given if %(field)s is %(value)s" -msgstr "Questo campo è obbligatorio se %(field)s è %(value)s" - -#: core/validators.py:332 -#, python-format -msgid "This field must be given if %(field)s is not %(value)s" -msgstr "Questo campo è obbligatorio se %(field)s non è %(value)s" - -#: core/validators.py:351 -msgid "Duplicate values are not allowed." -msgstr "Non sono ammessi valori duplicati." - -#: core/validators.py:366 -#, python-format -msgid "This value must be between %s and %s." -msgstr "Questo valore deve essere compreso tra %s e %s." - -#: core/validators.py:368 -#, python-format -msgid "This value must be at least %s." -msgstr "Questo valore deve essere almeno pari a %s." - -#: core/validators.py:370 -#, python-format -msgid "This value must be no more than %s." -msgstr "Questo valore non deve essere maggiore di %s." - -#: core/validators.py:406 -#, python-format -msgid "This value must be a power of %s." -msgstr "Questo valore deve essere una potenza di %s." - -#: core/validators.py:417 -msgid "Please enter a valid decimal number." -msgstr "Inserire un numero decimale valido." - -#: core/validators.py:421 -#, 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] "Inserire un numero decimale con non più di %s cifra in totale." -msgstr[1] "Inserire un numero decimale con non più di %s cifre in totale." - -#: core/validators.py:424 -#, 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] "Inserire un numero decimale la cui parte intera sia composta da non più di %s cifra." -msgstr[1] "Inserire un numero decimale la cui parte intera sia composta da non più di %s cifre." - -#: core/validators.py:427 -#, 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] "Inserire un decimale con non più di %s cifra decimale." -msgstr[1] "Inserire un decimale con non più di %s cifre decimali." - -#: core/validators.py:437 -#, python-format -msgid "Make sure your uploaded file is at least %s bytes big." -msgstr "Verificare che il file caricato sia grande almeno %s byte." - -#: core/validators.py:438 -#, python-format -msgid "Make sure your uploaded file is at most %s bytes big." -msgstr "Verificare che il file caricato non sia più grande di %s byte." - -#: core/validators.py:455 -msgid "The format for this field is wrong." -msgstr "Il formato di questo campo non è valido." - -#: core/validators.py:470 -msgid "This field is invalid." -msgstr "Questo campo non è valido." - -#: core/validators.py:506 -#, python-format -msgid "Could not retrieve anything from %s." -msgstr "Impossibile recuperare alcunché da %s." - -#: core/validators.py:509 -#, python-format -msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." -msgstr "La URL %(url)s ha restituito un header Content-Type non valido: '%(contenttype)s'." - -#: core/validators.py:542 -#, python-format -msgid "" -"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " -"\"%(start)s\".)" -msgstr "Chiudere il tag %(tag)s a linea %(line)s. (La linea inizia con \"%(start)s\".)" - -#: core/validators.py:546 -#, python-format -msgid "" -"Some text starting on line %(line)s is not allowed in that context. (Line " -"starts with \"%(start)s\".)" -msgstr "" -"Il testo che comincia a linea %(line)s non e' ammesso in questo contesto. " -"(La linea comincia con \"%(start)s\".)" - -#: core/validators.py:551 -#, python-format -msgid "" -"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" -"(start)s\".)" -msgstr "\"%(attr)s\" a linea %(line)s non è un attributo valido. (La linea comincia con \"%(start)s\".)" - -#: core/validators.py:556 -#, python-format -msgid "" -"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" -"(start)s\".)" -msgstr "" -"\"<%(tag)s>\" a linea %(line)s non è un tag valido. (La linea comincia con \"%" -"(start)s\".)" - -#: core/validators.py:560 -#, python-format -msgid "" -"A tag on line %(line)s is missing one or more required attributes. (Line " -"starts with \"%(start)s\".)" -msgstr "" -"Un tag a linea %(line)s manca di uno o più attributi richiesti. (La linea " -"comincia con \"%(start)s\".)" - -#: core/validators.py:565 -#, python-format -msgid "" -"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " -"starts with \"%(start)s\".)" -msgstr "" -"L'attributo \"%(attr)s\" a linea %(line)s ha un valore non valido. (La " -"linea comincia con \"%(start)s\".)" - -#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 -msgid "The two password fields didn't match." -msgstr "I due campi password non corrispondono." - -#: contrib/auth/forms.py:25 -msgid "A user with that username already exists." -msgstr "Un utente con questo nome·è già presente." - -#: contrib/auth/forms.py:53 -msgid "" -"Your Web browser doesn't appear to have cookies enabled. Cookies are " -"required for logging in." -msgstr "Il browser web sembra non avere i cookie abilitati. I cookie sono necessari per poter accedere." - -#: contrib/auth/forms.py:60 contrib/admin/views/decorators.py:10 -msgid "" -"Please enter a correct username and password. Note that both fields are case-" -"sensitive." -msgstr "" -"Inserire nome utente e password corretti. Entrambi i campi sono case " -"sensitive." - -#: contrib/auth/forms.py:62 -msgid "This account is inactive." -msgstr "Questo account non è attivo." - -#: contrib/auth/forms.py:85 -msgid "" -"That e-mail address doesn't have an associated user account. Are you sure " -"you've registered?" -msgstr "Questo indirizzo email non è associato ad alcun account utente. Sei sicuro di esserti registrato?" - -#: contrib/auth/forms.py:117 -msgid "The two 'new password' fields didn't match." -msgstr "I due campi 'nuova password' non corrispondono." - -#: contrib/auth/forms.py:124 -msgid "Your old password was entered incorrectly. Please enter it again." -msgstr "La vecchia password non è stata inserita correttamente: va inserita di nuovo." - -#: contrib/auth/models.py:38 contrib/auth/models.py:57 -msgid "name" -msgstr "nome" - -#: contrib/auth/models.py:40 -msgid "codename" -msgstr "nome in codice" - -#: contrib/auth/models.py:42 -msgid "permission" -msgstr "permesso" - -#: contrib/auth/models.py:43 contrib/auth/models.py:58 -msgid "permissions" -msgstr "permessi" - -#: contrib/auth/models.py:60 -msgid "group" -msgstr "gruppo" - -#: contrib/auth/models.py:61 contrib/auth/models.py:100 -msgid "groups" -msgstr "gruppi" - -#: contrib/auth/models.py:90 -msgid "username" -msgstr "nome utente" - -#: contrib/auth/models.py:90 -msgid "" -"Required. 30 characters or fewer. Alphanumeric characters only (letters, " -"digits and underscores)." -msgstr "Obbligatorio. 30 caratteri o meno. Solo caratteri alfanumerici (lettere, cifre e sottolineature)." - -#: contrib/auth/models.py:91 -msgid "first name" -msgstr "nome" - -#: contrib/auth/models.py:92 -msgid "last name" -msgstr "cognome" - -#: contrib/auth/models.py:93 -msgid "e-mail address" -msgstr "indirizzo e-mail" - -#: contrib/auth/models.py:94 -msgid "password" -msgstr "password" - -#: contrib/auth/models.py:94 -msgid "" -"Use '[algo]$[salt]$[hexdigest]' or use the change " -"password form." -msgstr "Usare '[algo]$[salt]$[hexdigest]' oppure la maschera di cambio password." - -#: contrib/auth/models.py:95 -msgid "staff status" -msgstr "privilegi di staff" - -#: contrib/auth/models.py:95 -msgid "Designates whether the user can log into this admin site." -msgstr "Indica se l'utente può accedere a questo sito di amministrazione." - -#: contrib/auth/models.py:96 -msgid "active" -msgstr "attivo" - -#: contrib/auth/models.py:96 -msgid "" -"Designates whether this user can log into the Django admin. Unselect this " -"instead of deleting accounts." -msgstr "Indica se l'utente può accedere all'amministrazione di Django. Deselezionare qui, piuttosto che cancellare gli account." - -#: contrib/auth/models.py:97 -msgid "superuser status" -msgstr "privilegi di superutente" - -#: contrib/auth/models.py:97 -msgid "" -"Designates that this user has all permissions without explicitly assigning " -"them." -msgstr "Indica che l'utente ha tutti i privilegi, senza che siano stati assegnati esplicitamente." - -#: contrib/auth/models.py:98 -msgid "last login" -msgstr "ultimo accesso" - -#: contrib/auth/models.py:99 -msgid "date joined" -msgstr "iscritto in data" - -#: 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 "" -"In aggiunta ai privilegi assegnati manualmente, l'utente riceverà anche tutti " -"i privilegi assegnati ad ogni gruppo cui appartiene." - -#: contrib/auth/models.py:102 -msgid "user permissions" -msgstr "privilegi utente" - -#: contrib/auth/models.py:105 -msgid "user" -msgstr "utente" - -#: contrib/auth/models.py:106 -msgid "users" -msgstr "utenti" - -#: contrib/auth/models.py:111 -msgid "Personal info" -msgstr "Informazioni personali" - -#: contrib/auth/models.py:112 -msgid "Permissions" -msgstr "Privilegi" - -#: contrib/auth/models.py:113 -msgid "Important dates" -msgstr "Date importanti" - -#: contrib/auth/models.py:114 -msgid "Groups" -msgstr "Gruppi" - -#: contrib/auth/models.py:258 -msgid "message" -msgstr "messaggio" - -#: contrib/auth/views.py:39 -msgid "Logged out" -msgstr "Accesso annullato" - -#: contrib/admin/models.py:16 -msgid "action time" -msgstr "data azione" - -#: contrib/admin/models.py:19 -msgid "object id" -msgstr "ID oggetto" - -#: contrib/admin/models.py:20 -msgid "object repr" -msgstr "rappresentazione oggetto" - -#: contrib/admin/models.py:21 -msgid "action flag" -msgstr "flag azione" - -#: contrib/admin/models.py:22 -msgid "change message" -msgstr "messaggio di modifica" - -#: contrib/admin/models.py:25 -msgid "log entry" -msgstr "voce di log" - -#: contrib/admin/models.py:26 -msgid "log entries" -msgstr "voci di log" - #: contrib/admin/filterspecs.py:40 #, python-format msgid "" @@ -759,39 +212,640 @@ msgstr "Questo mese" msgid "This year" msgstr "Quest'anno" -#: contrib/admin/filterspecs.py:143 oldforms/__init__.py:572 -#: newforms/widgets.py:170 +#: contrib/admin/filterspecs.py:143 newforms/widgets.py:180 +#: oldforms/__init__.py:577 msgid "Yes" msgstr "Sì" -#: contrib/admin/filterspecs.py:143 oldforms/__init__.py:572 -#: newforms/widgets.py:170 +#: contrib/admin/filterspecs.py:143 newforms/widgets.py:180 +#: oldforms/__init__.py:577 msgid "No" msgstr "No" -#: contrib/admin/filterspecs.py:150 oldforms/__init__.py:572 -#: newforms/widgets.py:170 +#: contrib/admin/filterspecs.py:150 newforms/widgets.py:180 +#: oldforms/__init__.py:577 msgid "Unknown" msgstr "Sconosciuto" -#: contrib/admin/views/decorators.py:24 +#: contrib/admin/models.py:16 +msgid "action time" +msgstr "data azione" + +#: contrib/admin/models.py:19 +msgid "object id" +msgstr "ID oggetto" + +#: contrib/admin/models.py:20 +msgid "object repr" +msgstr "rappresentazione oggetto" + +#: contrib/admin/models.py:21 +msgid "action flag" +msgstr "flag azione" + +#: contrib/admin/models.py:22 +msgid "change message" +msgstr "messaggio di modifica" + +#: contrib/admin/models.py:25 +msgid "log entry" +msgstr "voce di log" + +#: contrib/admin/models.py:26 +msgid "log entries" +msgstr "voci di log" + +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "Pagina non trovata" + +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "Spiacenti, ma la pagina richiesta non è stata trovata." + +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/base.html:30 +#: contrib/admin/templates/admin/change_form.html:13 +#: contrib/admin/templates/admin/change_list.html:6 +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/auth/user/change_password.html:12 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +#: contrib/admin/templates/registration/logged_out.html:4 +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +msgid "Home" +msgstr "Pagina iniziale" + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "Errore del server" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "Errore del server (500)" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "Errore del server (500)" + +#: contrib/admin/templates/admin/500.html:10 +msgid "" +"There's been an error. It's been reported to the site administrators via e-" +"mail and should be fixed shortly. Thanks for your patience." +msgstr "" +"Si è verificato un errore. È stato riportato agli amministratori del sito " +"via e-mail e verrà corretto a breve. Grazie per la tua pazienza." + +#: contrib/admin/templates/admin/base.html:25 +msgid "Welcome," +msgstr "Benvenuto," + +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +msgid "Documentation" +msgstr "Documentazione" + +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/object_history.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/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/model_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/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +msgid "Change password" +msgstr "Cambia la password" + +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/model_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/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/comments/templates/comments/form.html:6 +msgid "Log out" +msgstr "Esci" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "Amministrazione sito Django" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "Amministrazione Django" + +#: contrib/admin/templates/admin/change_form.html:15 +#: contrib/admin/templates/admin/index.html:28 +msgid "Add" +msgstr "Aggiungi" + +#: contrib/admin/templates/admin/change_form.html:21 +#: contrib/admin/templates/admin/object_history.html:5 +msgid "History" +msgstr "Storia" + +#: contrib/admin/templates/admin/change_form.html:22 +msgid "View on site" +msgstr "Vedi sul sito" + +#: 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] "Correggere l'errore qui sotto." +msgstr[1] "Correggere gli errori qui sotto." + +#: contrib/admin/templates/admin/change_form.html:50 +msgid "Ordering" +msgstr "Ordinamento" + +#: contrib/admin/templates/admin/change_form.html:53 +msgid "Order:" +msgstr "Ordine:" + +#: contrib/admin/templates/admin/change_list.html:12 +#, python-format +msgid "Add %(name)s" +msgstr "Aggiungi %(name)s" + +#: contrib/admin/templates/admin/delete_confirmation.html:9 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Delete" +msgstr "Cancella" + +#: 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 "" +"La cancellazione di %(object_name)s '%(escaped_object)s' causerebbe la " +"cancellazione di oggetti collegati, ma questo account non ha i permessi per " +"cancellare gli oggetti dei seguenti tipi:" + +#: 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 "" +"Sei sicuro di voler rimuovere %(object_name)s \"%(escaped_object)s\"? Tutti " +"i seguenti oggetti collegati saranno cancellati:" + +#: contrib/admin/templates/admin/delete_confirmation.html:26 +msgid "Yes, I'm sure" +msgstr "Sì, sono sicuro" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr " Per %(filter_title)s " + +#: contrib/admin/templates/admin/filters.html:4 +msgid "Filter" +msgstr "Filtro" + +#: contrib/admin/templates/admin/index.html:17 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "Modelli disponibili nell'applicazione %(name)s." + +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "%(name)s" +msgstr "%(name)s" + +#: contrib/admin/templates/admin/index.html:34 +msgid "Change" +msgstr "Modifica" + +#: contrib/admin/templates/admin/index.html:44 +msgid "You don't have permission to edit anything." +msgstr "Non hai i privilegi per modificare alcunché." + +#: contrib/admin/templates/admin/index.html:52 +msgid "Recent Actions" +msgstr "Azioni Recenti" + +#: contrib/admin/templates/admin/index.html:53 +msgid "My Actions" +msgstr "Azioni Proprie" + +#: contrib/admin/templates/admin/index.html:57 +msgid "None available" +msgstr "Nessuno disponibile" + +#: 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 "" +"Ci sono problemi nell'installazione del database. Assicurarsi che le tabelle " +"appropriate del database siano state create, e che il database sia leggibile " +"dall'utente appropriato." + +#: contrib/admin/templates/admin/login.html:17 +#: contrib/comments/templates/comments/form.html:6 +#: contrib/comments/templates/comments/form.html:8 +msgid "Username:" +msgstr "Nome utente:" + +#: contrib/admin/templates/admin/login.html:20 +#: contrib/comments/templates/comments/form.html:8 +msgid "Password:" +msgstr "Password:" + #: contrib/admin/templates/admin/login.html:25 +#: contrib/admin/views/decorators.py:24 msgid "Log in" msgstr "Accedi" +#: contrib/admin/templates/admin/object_history.html:18 +msgid "Date/time" +msgstr "Data/orario" + +#: contrib/admin/templates/admin/object_history.html:19 +msgid "User" +msgstr "Utente" + +#: contrib/admin/templates/admin/object_history.html:20 +msgid "Action" +msgstr "Azione" + +#: contrib/admin/templates/admin/object_history.html:26 +msgid "DATE_WITH_TIME_FULL" +msgstr "j F Y, H:i" + +#: contrib/admin/templates/admin/object_history.html:36 +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "" +"Questo oggetto non ha cambiamenti registrati. Probabilmente non è stato " +"creato con questo sito di amministrazione." + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "Mostra tutto" + +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Go" +msgstr "Vai" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "1 risultato" +msgstr[1] "%(counter)s risultati" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "%(full_result_count)s totali" + +#: contrib/admin/templates/admin/submit_line.html:4 +msgid "Save as new" +msgstr "Salva come nuovo" + +#: contrib/admin/templates/admin/submit_line.html:5 +msgid "Save and add another" +msgstr "Salva e aggiungi un altro" + +#: contrib/admin/templates/admin/submit_line.html:6 +msgid "Save and continue editing" +msgstr "Salva e continua le modifiche" + +#: contrib/admin/templates/admin/submit_line.html:7 +msgid "Save" +msgstr "Salva" + +#: 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 "" +"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" +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 "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 "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 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 %(username)s." +msgstr "" +"Inserire una nuova password per l'utente %(username)s." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Bookmarklets" +msgstr "Bookmarklet" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:5 +msgid "Documentation bookmarklets" +msgstr "Bookmarklet alla documentazione" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:9 +msgid "" +"\n" +"

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

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

                Per installare i bookmarklet, trascinare il link sulla " +"barra \n" +"dei bookmark, o cliccare il link con il tasto destro e aggiungerlo ai " +"bookmark.\n" +"Sarà quindi possibile selezionare un bookmarklet in qualsiasi pagina del " +"sito.\n" +"Si noti che alcuni di questi bookmarklet richiedono l'accesso al sito " +"tramite un\n" +"computer designato come \"interno\" (chiedere al proprio amministratore di \n" +"sistema se non si è sicuri che il proprio computer sia \"interno\").

                \n" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:19 +msgid "Documentation for this page" +msgstr "Documentazione per questa pagina" + +#: 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 "" +"Porta da qualsiasi pagina alla documentazione della view che genera quella " +"pagina." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:22 +msgid "Show object ID" +msgstr "Mostra l'ID dell'oggetto" + +#: 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 il content-type e l'ID univoco di pagine che rappresentano un singolo " +"oggetto." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:25 +msgid "Edit this object (current window)" +msgstr "Modifica quest'oggetto (nella finestra corrente)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:26 +msgid "Jumps to the admin page for pages that represent a single object." +msgstr "" +"Porta alla pagina amministrativa di pagine che rappresentano un oggetto " +"singolo." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:28 +msgid "Edit this object (new window)" +msgstr "Modifica quest'oggetto (in una nuova finestra)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:29 +msgid "As above, but opens the admin page in a new window." +msgstr "" +"Come sopra, ma apre la pagina di amministrazione in una nuova finestra." + +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Grazie per aver speso il tuo tempo prezioso su questo sito oggi." + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "Accedi di nuovo" + +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/registration/password_change_form.html:6 +#: contrib/admin/templates/registration/password_change_form.html:10 +msgid "Password change" +msgstr "Cambio 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 password avvenuto correttamente" + +#: contrib/admin/templates/registration/password_change_done.html:12 +msgid "Your password was changed." +msgstr "La password è stata cambiata." + +#: 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 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 "Password attuale:" + +#: contrib/admin/templates/registration/password_change_form.html:19 +msgid "New password:" +msgstr "Nuova password:" + +#: contrib/admin/templates/registration/password_change_form.html:21 +msgid "Confirm password:" +msgstr "Confermare la password:" + +#: contrib/admin/templates/registration/password_change_form.html:23 +msgid "Change my password" +msgstr "Modifica la mia password" + +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:6 +#: contrib/admin/templates/registration/password_reset_form.html:10 +msgid "Password reset" +msgstr "Reimposta la password" + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +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 password è stata inviata all'indirizzo e-mail inserito. Arriverà a " +"breve." + +#: 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 password" + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +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 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 password tramite questa pagina:" + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Your username, in case you've forgotten:" +msgstr "Il tuo nome utente, in caso l'abbia dimenticato:" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +msgid "Thanks for using our site!" +msgstr "Grazie per aver usato il nostro sito!" + +#: contrib/admin/templates/registration/password_reset_email.html:15 +#, python-format +msgid "The %(site_name)s team" +msgstr "Il team di %(site_name)s" + +#: contrib/admin/templates/registration/password_reset_form.html:12 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll reset " +"your password and e-mail the new one to you." +msgstr "" +"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:" +msgstr "Indirizzo e-mail:" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "Reimposta la mia password" + +#: contrib/admin/templates/widget/date_time.html:3 +msgid "Date:" +msgstr "Data:" + +#: contrib/admin/templates/widget/date_time.html:4 +msgid "Time:" +msgstr "Orario:" + +#: contrib/admin/templates/widget/file.html:2 +msgid "Currently:" +msgstr "Attualmente:" + +#: contrib/admin/templates/widget/file.html:3 +msgid "Change:" +msgstr "Modifica:" + +#: contrib/admin/templatetags/admin_list.py:247 +msgid "All dates" +msgstr "Tutte le date" + +#: contrib/admin/views/auth.py:19 contrib/admin/views/main.py:257 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "%(name)s \"%(obj)s\" è stato aggiunto correttamente." + +#: 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 "È possibile modificarlo nuovamente qui sotto." + +#: contrib/admin/views/auth.py:30 +msgid "Add user" +msgstr "Aggiungi utente" + +#: contrib/admin/views/auth.py:57 +msgid "Password changed successfully." +msgstr "La password è stata cambiata correttamente." + +#: contrib/admin/views/auth.py:64 +#, python-format +msgid "Change password: %s" +msgstr "Cambia la password: %s" + +#: 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 "" +"Inserire nome utente e password corretti. Entrambi i campi sono case " +"sensitive." + #: 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 "" -"La sessione è scaduta: occorre accedere nuovamente. I dati inseriti sono stati comunque" -"salvati." +"La sessione è scaduta: occorre accedere nuovamente. I dati inseriti sono " +"stati comunquesalvati." #: 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 "Il browser non sembra configurato per accettare i cookie. Una volta abilitati, ricaricare la pagina e riprovare." +msgstr "" +"Il browser non sembra configurato per accettare i cookie. Una volta " +"abilitati, ricaricare la pagina e riprovare." #: contrib/admin/views/decorators.py:83 msgid "Usernames cannot contain the '@' character." @@ -800,103 +854,8 @@ msgstr "I nomi utente non possono contenere il carattere '@'." #: contrib/admin/views/decorators.py:85 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." -msgstr "Il nome utente non è costituito dall'indirizzo e-mail. Provare con '%s'." - -#: contrib/admin/views/main.py:223 -msgid "Site administration" -msgstr "Amministrazione sito" - -#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:19 -#, python-format -msgid "The %(name)s \"%(obj)s\" was added successfully." -msgstr "%(name)s \"%(obj)s\" è stato aggiunto correttamente." - -#: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347 -#: contrib/admin/views/auth.py:24 -msgid "You may edit it again below." -msgstr "È possibile modificarlo nuovamente qui sotto." - -#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356 -#, python-format -msgid "You may add another %s below." -msgstr "È possibile aggiungere un altro %s qui sotto." - -#: contrib/admin/views/main.py:289 -#, python-format -msgid "Add %s" -msgstr "Aggiungere %s" - -#: contrib/admin/views/main.py:335 -#, python-format -msgid "Added %s." -msgstr "Aggiunto %s" - -#: contrib/admin/views/main.py:337 -#, python-format -msgid "Changed %s." -msgstr "Modificato %s." - -#: contrib/admin/views/main.py:339 -#, python-format -msgid "Deleted %s." -msgstr "Cancellato %s" - -#: contrib/admin/views/main.py:342 -msgid "No fields changed." -msgstr "Nessun campo modificato." - -#: contrib/admin/views/main.py:345 -#, python-format -msgid "The %(name)s \"%(obj)s\" was changed successfully." -msgstr "%(name)s \"%(obj)s\" è stato modificato correttamente." - -#: 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\" è stato aggiunto correttamente. È possibile modificarlo nuovamente qui sotto." - -#: contrib/admin/views/main.py:391 -#, python-format -msgid "Change %s" -msgstr "Modificare %s" - -#: contrib/admin/views/main.py:476 -#, python-format -msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "Uno o più %(fieldname)s in %(name)s: %(obj)s" - -#: contrib/admin/views/main.py:481 -#, python-format -msgid "One or more %(fieldname)s in %(name)s:" -msgstr "Uno o più %(fieldname)s in %(name)s:" - -#: contrib/admin/views/main.py:514 -#, python-format -msgid "The %(name)s \"%(obj)s\" was deleted successfully." -msgstr "%(name)s \"%(obj)s\" è stato cancellato correttamente." - -#: contrib/admin/views/main.py:517 -msgid "Are you sure?" -msgstr "Sei sicuro?" - -#: contrib/admin/views/main.py:539 -#, python-format -msgid "Change history: %s" -msgstr "Tracciato delle modifiche: %s" - -#: contrib/admin/views/main.py:573 -#, python-format -msgid "Select %s" -msgstr "Seleziona %s" - -#: contrib/admin/views/main.py:573 -#, python-format -msgid "Select %s to change" -msgstr "Seleziona %s per modificare" - -#: contrib/admin/views/main.py:768 -msgid "Database error" -msgstr "Errore nel database" +msgstr "" +"Il nome utente non è costituito dall'indirizzo e-mail. Provare con '%s'." #: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48 #: contrib/admin/views/doc.py:50 @@ -919,13 +878,13 @@ msgid "App %r not found" msgstr "Appl. %r non trovata" #: contrib/admin/views/doc.py:171 -#, python-format -msgid "Model %r not found in app %r" +#, fuzzy, python-format +msgid "Model %(name)r not found in app %(label)r" msgstr "Modello %r non trovato nell'appl. %r" #: contrib/admin/views/doc.py:183 -#, python-format -msgid "the related `%s.%s` object" +#, fuzzy, python-format +msgid "the related `%(label)s.%(type)s` object" msgstr "l'oggetto `%s.%s` collegato" #: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205 @@ -934,8 +893,8 @@ msgid "model:" msgstr "modello:" #: contrib/admin/views/doc.py:214 -#, python-format -msgid "related `%s.%s` objects" +#, fuzzy, python-format +msgid "related `%(label)s.%(name)s` objects" msgstr "oggetti `%s.%s` collegati" #: contrib/admin/views/doc.py:219 @@ -1034,621 +993,280 @@ msgstr "Testo XML" msgid "%s does not appear to be a urlpattern object" msgstr "%s non sembra essere un oggetto urlpattern" -#: contrib/admin/views/auth.py:30 -msgid "Add user" -msgstr "Aggiungi utente" +#: contrib/admin/views/main.py:223 +msgid "Site administration" +msgstr "Amministrazione sito" -#: contrib/admin/views/auth.py:57 -msgid "Password changed successfully." -msgstr "La password è stata cambiata correttamente." - -#: contrib/admin/views/auth.py:64 +#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356 #, python-format -msgid "Change password: %s" -msgstr "Cambia la password: %s" +msgid "You may add another %s below." +msgstr "È possibile aggiungere un altro %s qui sotto." -#: contrib/admin/templatetags/admin_list.py:247 -msgid "All dates" -msgstr "Tutte le date" +#: contrib/admin/views/main.py:289 +#, python-format +msgid "Add %s" +msgstr "Aggiungere %s" -#: contrib/admin/templates/admin/pagination.html:10 -msgid "Show all" -msgstr "Mostra tutto" +#: contrib/admin/views/main.py:335 +#, python-format +msgid "Added %s." +msgstr "Aggiunto %s" -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/base.html:25 -#: contrib/admin/templates/admin/auth/user/change_password.html:9 -#: contrib/admin/templates/admin_doc/bookmarklets.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/registration/password_change_done.html:3 -msgid "Documentation" -msgstr "Documentazione" +#: contrib/admin/views/main.py:335 contrib/admin/views/main.py:337 +#: contrib/admin/views/main.py:339 db/models/manipulators.py:308 +msgid "and" +msgstr "e" -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/base.html:25 -#: contrib/admin/templates/admin/auth/user/change_password.html:9 -#: contrib/admin/templates/admin/auth/user/change_password.html:15 -#: contrib/admin/templates/admin/auth/user/change_password.html:46 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 -#: contrib/admin/templates/admin_doc/index.html:4 -#: contrib/admin/templates/admin_doc/model_detail.html:3 -#: contrib/admin/templates/admin_doc/missing_docutils.html:4 -#: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/view_index.html:5 -#: contrib/admin/templates/admin_doc/model_index.html:5 -#: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/registration/password_change_done.html:3 -msgid "Change password" -msgstr "Cambia la password" +#: contrib/admin/views/main.py:337 +#, python-format +msgid "Changed %s." +msgstr "Modificato %s." -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/base.html:25 -#: contrib/admin/templates/admin/auth/user/change_password.html:9 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 -#: contrib/admin/templates/admin_doc/index.html:4 -#: contrib/admin/templates/admin_doc/model_detail.html:3 -#: contrib/admin/templates/admin_doc/missing_docutils.html:4 -#: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/view_index.html:5 -#: contrib/admin/templates/admin_doc/model_index.html:5 -#: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/comments/templates/comments/form.html:6 -msgid "Log out" -msgstr "Esci" +#: contrib/admin/views/main.py:339 +#, python-format +msgid "Deleted %s." +msgstr "Cancellato %s" -#: contrib/admin/templates/admin/delete_confirmation.html:6 -#: contrib/admin/templates/admin/change_form.html:13 -#: contrib/admin/templates/admin/change_list.html:6 -#: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/500.html:4 -#: contrib/admin/templates/admin/invalid_setup.html:4 -#: contrib/admin/templates/admin/base.html:30 -#: contrib/admin/templates/admin/auth/user/change_password.html:12 -#: contrib/admin/templates/admin_doc/bookmarklets.html:3 -#: contrib/admin/templates/registration/password_reset_form.html:4 -#: contrib/admin/templates/registration/logged_out.html:4 -#: contrib/admin/templates/registration/password_reset_done.html:4 -#: contrib/admin/templates/registration/password_change_form.html:4 -#: contrib/admin/templates/registration/password_change_done.html:4 -msgid "Home" -msgstr "Pagina iniziale" +#: contrib/admin/views/main.py:342 +msgid "No fields changed." +msgstr "Nessun campo modificato." -#: contrib/admin/templates/admin/delete_confirmation.html:9 -#: contrib/admin/templates/admin/submit_line.html:3 -msgid "Delete" -msgstr "Cancella" +#: contrib/admin/views/main.py:345 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" è stato modificato correttamente." -#: contrib/admin/templates/admin/delete_confirmation.html:14 +#: contrib/admin/views/main.py:353 #, 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:" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." msgstr "" -"La cancellazione di %(object_name)s '%(escaped_object)s' causerebbe la cancellazione " -"di oggetti collegati, ma questo account non ha i permessi per cancellare gli oggetti dei seguenti tipi:" +"%(name)s \"%(obj)s\" è stato aggiunto correttamente. È possibile modificarlo " +"nuovamente qui sotto." -#: contrib/admin/templates/admin/delete_confirmation.html:21 +#: contrib/admin/views/main.py:391 #, python-format +msgid "Change %s" +msgstr "Modificare %s" + +#: contrib/admin/views/main.py:476 +#, python-format +msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +msgstr "Uno o più %(fieldname)s in %(name)s: %(obj)s" + +#: contrib/admin/views/main.py:481 +#, python-format +msgid "One or more %(fieldname)s in %(name)s:" +msgstr "Uno o più %(fieldname)s in %(name)s:" + +#: contrib/admin/views/main.py:514 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "%(name)s \"%(obj)s\" è stato cancellato correttamente." + +#: contrib/admin/views/main.py:517 +msgid "Are you sure?" +msgstr "Sei sicuro?" + +#: contrib/admin/views/main.py:539 +#, python-format +msgid "Change history: %s" +msgstr "Tracciato delle modifiche: %s" + +#: contrib/admin/views/main.py:573 +#, python-format +msgid "Select %s" +msgstr "Seleziona %s" + +#: contrib/admin/views/main.py:573 +#, python-format +msgid "Select %s to change" +msgstr "Seleziona %s per modificare" + +#: contrib/admin/views/main.py:768 +msgid "Database error" +msgstr "Errore nel database" + +#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 +msgid "The two password fields didn't match." +msgstr "I due campi password non corrispondono." + +#: contrib/auth/forms.py:25 +msgid "A user with that username already exists." +msgstr "Un utente con questo nome·è già presente." + +#: contrib/auth/forms.py:53 msgid "" -"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " -"All of the following related items will be deleted:" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." msgstr "" -"Sei sicuro di voler rimuovere %(object_name)s \"%(escaped_object)s\"? Tutti i seguenti " -"oggetti collegati saranno cancellati:" +"Il browser web sembra non avere i cookie abilitati. I cookie sono necessari " +"per poter accedere." -#: contrib/admin/templates/admin/delete_confirmation.html:26 -msgid "Yes, I'm sure" -msgstr "Sì, sono sicuro" +#: contrib/auth/forms.py:62 +msgid "This account is inactive." +msgstr "Questo account non è attivo." -#: contrib/admin/templates/admin/404.html:4 -#: contrib/admin/templates/admin/404.html:8 -msgid "Page not found" -msgstr "Pagina non trovata" - -#: contrib/admin/templates/admin/404.html:10 -msgid "We're sorry, but the requested page could not be found." -msgstr "Spiacenti, ma la pagina richiesta non è stata trovata." - -#: contrib/admin/templates/admin/change_form.html:15 -#: contrib/admin/templates/admin/index.html:28 -msgid "Add" -msgstr "Aggiungi" - -#: contrib/admin/templates/admin/change_form.html:21 -#: contrib/admin/templates/admin/object_history.html:5 -msgid "History" -msgstr "Storia" - -#: contrib/admin/templates/admin/change_form.html:22 -msgid "View on site" -msgstr "Vedi sul sito" - -#: 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] "Correggere l'errore qui sotto." -msgstr[1] "Correggere gli errori qui sotto." - -#: contrib/admin/templates/admin/change_form.html:50 -msgid "Ordering" -msgstr "Ordinamento" - -#: contrib/admin/templates/admin/change_form.html:53 -msgid "Order:" -msgstr "Ordine:" - -#: contrib/admin/templates/admin/filter.html:2 -#, python-format -msgid " By %(filter_title)s " -msgstr " Per %(filter_title)s " - -#: contrib/admin/templates/admin/submit_line.html:4 -msgid "Save as new" -msgstr "Salva come nuovo" - -#: contrib/admin/templates/admin/submit_line.html:5 -msgid "Save and add another" -msgstr "Salva e aggiungi un altro" - -#: contrib/admin/templates/admin/submit_line.html:6 -msgid "Save and continue editing" -msgstr "Salva e continua le modifiche" - -#: contrib/admin/templates/admin/submit_line.html:7 -msgid "Save" -msgstr "Salva" - -#: contrib/admin/templates/admin/change_list.html:12 -#, python-format -msgid "Add %(name)s" -msgstr "Aggiungi %(name)s" - -#: contrib/admin/templates/admin/index.html:17 -#, python-format -msgid "Models available in the %(name)s application." -msgstr "Modelli disponibili nell'applicazione %(name)s." - -#: contrib/admin/templates/admin/index.html:18 -#, python-format -msgid "%(name)s" -msgstr "%(name)s" - -#: contrib/admin/templates/admin/index.html:34 -msgid "Change" -msgstr "Modifica" - -#: contrib/admin/templates/admin/index.html:44 -msgid "You don't have permission to edit anything." -msgstr "Non hai i privilegi per modificare alcunché." - -#: contrib/admin/templates/admin/index.html:52 -msgid "Recent Actions" -msgstr "Azioni Recenti" - -#: contrib/admin/templates/admin/index.html:53 -msgid "My Actions" -msgstr "Azioni Proprie" - -#: contrib/admin/templates/admin/index.html:57 -msgid "None available" -msgstr "Nessuno disponibile" - -#: contrib/admin/templates/admin/base_site.html:4 -msgid "Django site admin" -msgstr "Amministrazione sito Django" - -#: contrib/admin/templates/admin/base_site.html:7 -msgid "Django administration" -msgstr "Amministrazione Django" - -#: contrib/admin/templates/admin/object_history.html:18 -msgid "Date/time" -msgstr "Data/orario" - -#: contrib/admin/templates/admin/object_history.html:19 -msgid "User" -msgstr "Utente" - -#: contrib/admin/templates/admin/object_history.html:20 -msgid "Action" -msgstr "Azione" - -#: contrib/admin/templates/admin/object_history.html:26 -msgid "DATE_WITH_TIME_FULL" -msgstr "j F Y, H:i" - -#: contrib/admin/templates/admin/object_history.html:36 +#: contrib/auth/forms.py:85 msgid "" -"This object doesn't have a change history. It probably wasn't added via this " -"admin site." -msgstr "Questo oggetto non ha cambiamenti registrati. Probabilmente non è stato creato con questo sito di amministrazione." - -#: contrib/admin/templates/admin/500.html:4 -msgid "Server error" -msgstr "Errore del server" - -#: contrib/admin/templates/admin/500.html:6 -msgid "Server error (500)" -msgstr "Errore del server (500)" - -#: contrib/admin/templates/admin/500.html:9 -msgid "Server Error (500)" -msgstr "Errore del server (500)" - -#: contrib/admin/templates/admin/500.html:10 -msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." -msgstr "Si è verificato un errore. È stato riportato agli amministratori del sito via e-mail e verrà corretto a breve. Grazie per la tua pazienza." - -#: 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 "Ci sono problemi nell'installazione del database. Assicurarsi che le tabelle appropriate del database siano state create, e che il database sia leggibile dall'utente appropriato." - -#: contrib/admin/templates/admin/search_form.html:8 -msgid "Go" -msgstr "Vai" - -#: contrib/admin/templates/admin/search_form.html:10 -#, python-format -msgid "1 result" -msgid_plural "%(counter)s results" -msgstr[0] "1 risultato" -msgstr[1] "%(counter)s risultati" - -#: contrib/admin/templates/admin/search_form.html:10 -#, python-format -msgid "%(full_result_count)s total" -msgstr "%(full_result_count)s totali" - -#: contrib/admin/templates/admin/filters.html:4 -msgid "Filter" -msgstr "Filtro" - -#: contrib/admin/templates/admin/login.html:17 -#: contrib/comments/templates/comments/form.html:6 -#: contrib/comments/templates/comments/form.html:8 -msgid "Username:" -msgstr "Nome utente:" - -#: contrib/admin/templates/admin/login.html:20 -#: contrib/comments/templates/comments/form.html:8 -msgid "Password:" -msgstr "Password:" - -#: contrib/admin/templates/admin/login.html:22 -msgid "Have you forgotten your password?" -msgstr "Hai dimenticato la password?" - -#: contrib/admin/templates/admin/base.html:25 -msgid "Welcome," -msgstr "Benvenuto," - -#: 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 "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" -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 "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 "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 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 %(username)s." -msgstr "Inserire una nuova password per l'utente %(username)s." - -#: contrib/admin/templates/admin_doc/bookmarklets.html:3 -msgid "Bookmarklets" -msgstr "Bookmarklet" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:5 -msgid "Documentation bookmarklets" -msgstr "Bookmarklet alla documentazione" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:9 -msgid "" -"\n" -"

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

                \n" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" msgstr "" -"\n" -"

                Per installare i bookmarklet, trascinare il link sulla barra \n" -"dei bookmark, o cliccare il link con il tasto destro e aggiungerlo ai bookmark.\n" -"Sarà quindi possibile selezionare un bookmarklet in qualsiasi pagina del sito.\n" -"Si noti che alcuni di questi bookmarklet richiedono l'accesso al sito tramite un\n" -"computer designato come \"interno\" (chiedere al proprio amministratore di \n" -"sistema se non si è sicuri che il proprio computer sia \"interno\").

                \n" +"Questo indirizzo email non è associato ad alcun account utente. Sei sicuro " +"di esserti registrato?" -#: contrib/admin/templates/admin_doc/bookmarklets.html:19 -msgid "Documentation for this page" -msgstr "Documentazione per questa pagina" +#: contrib/auth/forms.py:117 +msgid "The two 'new password' fields didn't match." +msgstr "I due campi 'nuova password' non corrispondono." -#: contrib/admin/templates/admin_doc/bookmarklets.html:20 -msgid "" -"Jumps you from any page to the documentation for the view that generates " -"that page." +#: contrib/auth/forms.py:124 +msgid "Your old password was entered incorrectly. Please enter it again." msgstr "" -"Porta da qualsiasi pagina alla documentazione della view che genera " -"quella pagina." +"La vecchia password non è stata inserita correttamente: va inserita di nuovo." -#: contrib/admin/templates/admin_doc/bookmarklets.html:22 -msgid "Show object ID" -msgstr "Mostra l'ID dell'oggetto" +#: contrib/auth/models.py:38 contrib/auth/models.py:58 +msgid "name" +msgstr "nome" -#: contrib/admin/templates/admin_doc/bookmarklets.html:23 +#: contrib/auth/models.py:40 +msgid "codename" +msgstr "nome in codice" + +#: contrib/auth/models.py:43 +msgid "permission" +msgstr "permesso" + +#: contrib/auth/models.py:44 contrib/auth/models.py:59 +msgid "permissions" +msgstr "permessi" + +#: contrib/auth/models.py:62 +msgid "group" +msgstr "gruppo" + +#: contrib/auth/models.py:63 contrib/auth/models.py:103 +msgid "groups" +msgstr "gruppi" + +#: contrib/auth/models.py:93 +msgid "username" +msgstr "nome utente" + +#: contrib/auth/models.py:93 msgid "" -"Shows the content-type and unique ID for pages that represent a single " -"object." -msgstr "Mostra il content-type e l'ID univoco di pagine che rappresentano un singolo oggetto." +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "" +"Obbligatorio. 30 caratteri o meno. Solo caratteri alfanumerici (lettere, " +"cifre e sottolineature)." -#: contrib/admin/templates/admin_doc/bookmarklets.html:25 -msgid "Edit this object (current window)" -msgstr "Modifica quest'oggetto (nella finestra corrente)" +#: contrib/auth/models.py:94 +msgid "first name" +msgstr "nome" -#: contrib/admin/templates/admin_doc/bookmarklets.html:26 -msgid "Jumps to the admin page for pages that represent a single object." -msgstr "Porta alla pagina amministrativa di pagine che rappresentano un oggetto singolo." +#: contrib/auth/models.py:95 +msgid "last name" +msgstr "cognome" -#: contrib/admin/templates/admin_doc/bookmarklets.html:28 -msgid "Edit this object (new window)" -msgstr "Modifica quest'oggetto (in una nuova finestra)" +#: contrib/auth/models.py:96 +msgid "e-mail address" +msgstr "indirizzo e-mail" -#: contrib/admin/templates/admin_doc/bookmarklets.html:29 -msgid "As above, but opens the admin page in a new window." -msgstr "Come sopra, ma apre la pagina di amministrazione in una nuova finestra." +#: contrib/auth/models.py:97 +msgid "password" +msgstr "password" -#: contrib/admin/templates/widget/date_time.html:3 -msgid "Date:" -msgstr "Data:" - -#: contrib/admin/templates/widget/date_time.html:4 -msgid "Time:" -msgstr "Orario:" - -#: contrib/admin/templates/widget/file.html:2 -msgid "Currently:" -msgstr "Attualmente:" - -#: contrib/admin/templates/widget/file.html:3 -msgid "Change:" -msgstr "Modifica:" - -#: 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 "Reimposta la password" - -#: contrib/admin/templates/registration/password_reset_form.html:12 +#: contrib/auth/models.py:97 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 password? Inserire il proprio indirizzo e-mail qui sotto: la password sarà reimpostata, e la nuova ti verrà inviata per e-mail." +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "" +"Usare '[algo]$[salt]$[hexdigest]' oppure la maschera di cambio password." -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "E-mail address:" -msgstr "Indirizzo e-mail:" +#: contrib/auth/models.py:98 +msgid "staff status" +msgstr "privilegi di staff" -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "Reset my password" -msgstr "Reimposta la mia password" +#: contrib/auth/models.py:98 +msgid "Designates whether the user can log into this admin site." +msgstr "Indica se l'utente può accedere a questo sito di amministrazione." -#: 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 password" +#: contrib/auth/models.py:99 +msgid "active" +msgstr "attivo" -#: contrib/admin/templates/registration/password_reset_email.html:3 -#, python-format -msgid "for your user account at %(site_name)s" -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 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 password tramite questa pagina:" - -#: contrib/admin/templates/registration/password_reset_email.html:11 -msgid "Your username, in case you've forgotten:" -msgstr "Il tuo nome utente, in caso l'abbia dimenticato:" - -#: contrib/admin/templates/registration/password_reset_email.html:13 -msgid "Thanks for using our site!" -msgstr "Grazie per aver usato il nostro sito!" - -#: contrib/admin/templates/registration/password_reset_email.html:15 -#, python-format -msgid "The %(site_name)s team" -msgstr "Il team di %(site_name)s" - -#: contrib/admin/templates/registration/logged_out.html:8 -msgid "Thanks for spending some quality time with the Web site today." -msgstr "Grazie per aver speso il tuo tempo prezioso su questo sito oggi." - -#: contrib/admin/templates/registration/logged_out.html:10 -msgid "Log in again" -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 "Password reimpostata correttamente" - -#: contrib/admin/templates/registration/password_reset_done.html:12 +#: contrib/auth/models.py:99 msgid "" -"We've e-mailed a new password to the e-mail address you submitted. You " -"should be receiving it shortly." -msgstr "La nuova password è stata inviata all'indirizzo e-mail inserito. Arriverà a breve." +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "" +"Indica se l'utente può accedere all'amministrazione di Django. Deselezionare " +"qui, piuttosto che cancellare gli account." -#: 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 password" +#: contrib/auth/models.py:100 +msgid "superuser status" +msgstr "privilegi di superutente" -#: contrib/admin/templates/registration/password_change_form.html:12 +#: contrib/auth/models.py:100 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 password, per ragioni di sicurezza, e poi la nuova password due volte, per verificare di averla scritta correttamente." +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" +"Indica che l'utente ha tutti i privilegi, senza che siano stati assegnati " +"esplicitamente." -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "Password attuale:" +#: contrib/auth/models.py:101 +msgid "last login" +msgstr "ultimo accesso" -#: contrib/admin/templates/registration/password_change_form.html:19 -msgid "New password:" -msgstr "Nuova password:" +#: contrib/auth/models.py:102 +msgid "date joined" +msgstr "iscritto in data" -#: contrib/admin/templates/registration/password_change_form.html:21 -msgid "Confirm password:" -msgstr "Confermare la password:" - -#: contrib/admin/templates/registration/password_change_form.html:23 -msgid "Change my password" -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 password avvenuto correttamente" - -#: contrib/admin/templates/registration/password_change_done.html:12 -msgid "Your password was changed." -msgstr "La password è stata cambiata." - -#: contrib/sites/models.py:10 -msgid "domain name" -msgstr "nome di dominio" - -#: contrib/sites/models.py:11 -msgid "display name" -msgstr "nome visualizzato" - -#: contrib/sites/models.py:15 -msgid "site" -msgstr "sito" - -#: contrib/sites/models.py:16 -msgid "sites" -msgstr "siti" - -#: contrib/flatpages/models.py:8 -msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "Esempio: '/about/contact/'. Assicurarsi di inserire le barre diagonali iniziali e finali." - -#: contrib/flatpages/models.py:9 -msgid "title" -msgstr "titolo" - -#: contrib/flatpages/models.py:10 -msgid "content" -msgstr "contenuto" - -#: contrib/flatpages/models.py:11 -msgid "enable comments" -msgstr "abilita commenti" - -#: contrib/flatpages/models.py:12 -msgid "template name" -msgstr "nome modello" - -#: contrib/flatpages/models.py:13 +#: contrib/auth/models.py:104 msgid "" -"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " -"will use 'flatpages/default.html'." -msgstr "Esempio: 'flatpages/contact_page.html'. Se non specificato, il sistema userà 'flatpages/default.html'." +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" +"In aggiunta ai privilegi assegnati manualmente, l'utente riceverà anche " +"tutti i privilegi assegnati ad ogni gruppo cui appartiene." -#: contrib/flatpages/models.py:14 -msgid "registration required" -msgstr "registrazione obbligatoria" +#: contrib/auth/models.py:105 +msgid "user permissions" +msgstr "privilegi utente" -#: contrib/flatpages/models.py:14 -msgid "If this is checked, only logged-in users will be able to view the page." -msgstr "Se selezionato, solo gli utenti che hanno effettuato l'accesso potranno vedere la pagina." +#: contrib/auth/models.py:109 +msgid "user" +msgstr "utente" -#: contrib/flatpages/models.py:18 -msgid "flat page" -msgstr "pagina statica" +#: contrib/auth/models.py:110 +msgid "users" +msgstr "utenti" -#: contrib/flatpages/models.py:19 -msgid "flat pages" -msgstr "pagine statiche" +#: contrib/auth/models.py:116 +msgid "Personal info" +msgstr "Informazioni personali" -#: contrib/redirects/models.py:7 -msgid "redirect from" -msgstr "redirigi da" +#: contrib/auth/models.py:117 +msgid "Permissions" +msgstr "Privilegi" -#: contrib/redirects/models.py:8 -msgid "" -"This should be an absolute path, excluding the domain name. Example: '/" -"events/search/'." -msgstr "Deve essere un percorso assoluto, senza nome di dominio. Esempio: '/events/search/'." +#: contrib/auth/models.py:118 +msgid "Important dates" +msgstr "Date importanti" -#: contrib/redirects/models.py:9 -msgid "redirect to" -msgstr "redirigi verso" +#: contrib/auth/models.py:119 +msgid "Groups" +msgstr "Gruppi" -#: contrib/redirects/models.py:10 -msgid "" -"This can be either an absolute path (as above) or a full URL starting with " -"'http://'." -msgstr "Può essere un percorso assoluto (come sopra) o una URL completa che inizia con 'http://'." +#: contrib/auth/models.py:263 +msgid "message" +msgstr "messaggio" -#: contrib/redirects/models.py:13 -msgid "redirect" -msgstr "redirezione" - -#: contrib/redirects/models.py:14 -msgid "redirects" -msgstr "redirezioni" +#: contrib/auth/views.py:39 +msgid "Logged out" +msgstr "Accesso annullato" #: contrib/comments/models.py:67 contrib/comments/models.py:166 msgid "object ID" @@ -1715,7 +1333,9 @@ msgstr "è rimosso" msgid "" "Check this box if the comment is inappropriate. A \"This comment has been " "removed\" message will be displayed instead." -msgstr "Spuntare la casella se il commento è inappropriato. Verrà sostituito dal messaggio \"Questo commento è stato rimosso\"." +msgstr "" +"Spuntare la casella se il commento è inappropriato. Verrà sostituito dal " +"messaggio \"Questo commento è stato rimosso\"." #: contrib/comments/models.py:91 msgid "comments" @@ -1826,83 +1446,6 @@ msgstr "cancellazioni da moderatore" msgid "Moderator deletion by %r" msgstr "Cancellazione da moderatore %r" -#: contrib/comments/views/karma.py:19 -msgid "Anonymous users cannot vote" -msgstr "Gli utenti anonimi non possono votare" - -#: contrib/comments/views/karma.py:23 -msgid "Invalid comment ID" -msgstr "ID commento non valido" - -#: contrib/comments/views/karma.py:25 -msgid "No voting for yourself" -msgstr "Impossibile votare per se stessi" - -#: contrib/comments/views/comments.py:27 -msgid "This rating is required because you've entered at least one other rating." -msgstr "Questa valutazione è obbligatoria perché hai inserito almeno un'altra valutazione." - -#: 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] "" -"Questo commento è stato inserito da un utente autore di meno di %(count)s commento:\n" -"\n" -"%(text)s" -msgstr[1] "" -"Questo commento è stato inserito da un utente autore di meno di %(count)s commenti:\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 "" -"Questo commento è stato inserito da un utente non confermato:\n" -"\n" -"%(text)s" - -#: contrib/comments/views/comments.py:188 -#: contrib/comments/views/comments.py:280 -msgid "Only POSTs are allowed" -msgstr "Sono ammessi solo POST" - -#: contrib/comments/views/comments.py:192 -#: contrib/comments/views/comments.py:284 -msgid "One or more of the required fields wasn't submitted" -msgstr "Uno o più campi richiesti non sono stati inseriti" - -#: contrib/comments/views/comments.py:196 -#: contrib/comments/views/comments.py:286 -msgid "Somebody tampered with the comment form (security violation)" -msgstr "Qualcuno ha alterato il modulo di commento (violazione di sicurezza)" - -#: 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 "" -"Il modulo di commento ha un parametro 'target' non valido -- l'ID " -"dell'oggetto non e` valido" - -#: contrib/comments/views/comments.py:257 -#: contrib/comments/views/comments.py:321 -msgid "The comment form didn't provide either 'preview' or 'post'" -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 password?" @@ -1939,92 +1482,1112 @@ msgstr "Anteprima commento" msgid "Your name:" msgstr "Il suo nome:" -#: contrib/localflavor/uk/forms.py:18 -msgid "Enter a postcode. A space is required between the two postcode parts." -msgstr "Inserire un codice postale. È obbligatorio uno spazio tra le due parti del codice postale." +#: contrib/comments/views/comments.py:27 +msgid "" +"This rating is required because you've entered at least one other rating." +msgstr "" +"Questa valutazione è obbligatoria perché hai inserito almeno un'altra " +"valutazione." -#: contrib/localflavor/usa/forms.py:17 -msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." -msgstr "Inserire un codice postale nel formato XXXXX o XXXXX-XXXX." +#: 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] "" +"Questo commento è stato inserito da un utente autore di meno di %(count)s " +"commento:\n" +"\n" +"%(text)s" +msgstr[1] "" +"Questo commento è stato inserito da un utente autore di meno di %(count)s " +"commenti:\n" +"\n" +"%(text)s" -#: contrib/sessions/models.py:51 -msgid "session key" -msgstr "chiave di sessione" +#: contrib/comments/views/comments.py:116 +#, python-format +msgid "" +"This comment was posted by a sketchy user:\n" +"\n" +"%(text)s" +msgstr "" +"Questo commento è stato inserito da un utente non confermato:\n" +"\n" +"%(text)s" -#: contrib/sessions/models.py:52 -msgid "session data" -msgstr "dati di sessione" +#: contrib/comments/views/comments.py:188 +#: contrib/comments/views/comments.py:280 +msgid "Only POSTs are allowed" +msgstr "Sono ammessi solo POST" -#: contrib/sessions/models.py:53 -msgid "expire date" -msgstr "data di scadenza" +#: contrib/comments/views/comments.py:192 +#: contrib/comments/views/comments.py:284 +msgid "One or more of the required fields wasn't submitted" +msgstr "Uno o più campi richiesti non sono stati inseriti" -#: contrib/sessions/models.py:57 -msgid "session" -msgstr "sessione" +#: contrib/comments/views/comments.py:196 +#: contrib/comments/views/comments.py:286 +msgid "Somebody tampered with the comment form (security violation)" +msgstr "Qualcuno ha alterato il modulo di commento (violazione di sicurezza)" -#: contrib/sessions/models.py:58 -msgid "sessions" -msgstr "sessioni" +#: 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 "" +"Il modulo di commento ha un parametro 'target' non valido -- l'ID " +"dell'oggetto non è valido" -#: contrib/contenttypes/models.py:26 +#: contrib/comments/views/comments.py:257 +#: contrib/comments/views/comments.py:321 +msgid "The comment form didn't provide either 'preview' or 'post'" +msgstr "Il modulo di commento non fornisce né 'anteprima' né 'invia'" + +#: contrib/comments/views/karma.py:19 +msgid "Anonymous users cannot vote" +msgstr "Gli utenti anonimi non possono votare" + +#: contrib/comments/views/karma.py:23 +msgid "Invalid comment ID" +msgstr "ID commento non valido" + +#: contrib/comments/views/karma.py:25 +msgid "No voting for yourself" +msgstr "Impossibile votare per se stessi" + +#: contrib/contenttypes/models.py:36 msgid "python model class name" msgstr "nome della classe modello in Python" -#: contrib/contenttypes/models.py:29 +#: contrib/contenttypes/models.py:39 msgid "content type" msgstr "content type" -#: contrib/contenttypes/models.py:30 +#: contrib/contenttypes/models.py:40 msgid "content types" msgstr "content type" -#: oldforms/__init__.py:387 +#: contrib/flatpages/models.py:8 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" +"Esempio: '/about/contact/'. Assicurarsi di inserire le barre diagonali " +"iniziali e finali." + +#: contrib/flatpages/models.py:9 +msgid "title" +msgstr "titolo" + +#: contrib/flatpages/models.py:10 +msgid "content" +msgstr "contenuto" + +#: contrib/flatpages/models.py:11 +msgid "enable comments" +msgstr "abilita commenti" + +#: contrib/flatpages/models.py:12 +msgid "template name" +msgstr "nome modello" + +#: contrib/flatpages/models.py:13 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" +"Esempio: 'flatpages/contact_page.html'. Se non specificato, il sistema userà " +"'flatpages/default.html'." + +#: contrib/flatpages/models.py:14 +msgid "registration required" +msgstr "registrazione obbligatoria" + +#: contrib/flatpages/models.py:14 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "" +"Se selezionato, solo gli utenti che hanno effettuato l'accesso potranno " +"vedere la pagina." + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "pagina statica" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "pagine statiche" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "th" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:17 +#, fuzzy +msgid "st" +msgstr "º" + +#: contrib/humanize/templatetags/humanize.py:17 +#, fuzzy +msgid "nd" +msgstr "º" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "rd" +msgstr "º" + +#: contrib/humanize/templatetags/humanize.py:47 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "%(value).1f milione" +msgstr[1] "%(value).1f milioni" + +#: contrib/humanize/templatetags/humanize.py:50 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "%(value).1f miliardo" +msgstr[1] "%(value).1f miliardi" + +#: contrib/humanize/templatetags/humanize.py:53 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "one" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "two" +msgstr "due" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "three" +msgstr "tre" + +#: contrib/humanize/templatetags/humanize.py:68 +#, fuzzy +msgid "four" +msgstr "quattro" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "five" +msgstr "cinque" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "six" +msgstr "sei" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "seven" +msgstr "sette" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "eight" +msgstr "otto" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "nine" +msgstr "nove" + +#: contrib/localflavor/au/forms.py:18 +#, fuzzy +msgid "Enter a 4 digit post code." +msgstr "Inserire una codici postale di 4 cifre." + +#: contrib/localflavor/br/forms.py:18 +#, fuzzy +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "Inserire un codice postale nel formato XXXXX o XXXXX-XXXX." + +#: contrib/localflavor/br/forms.py:30 +#, fuzzy +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "" +"I numeri di telefono devono essere in formato XXX-XXX-XXXX. \"%s\" non è " +"valido." + +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "" + +#: contrib/localflavor/de/de_states.py:7 +#, fuzzy +msgid "Berlin" +msgstr "Berlino" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "Amburgo" + +#: contrib/localflavor/de/de_states.py:11 +#, fuzzy +msgid "Hessen" +msgstr "" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "" + +#: contrib/localflavor/de/de_states.py:16 +#, fuzzy +msgid "Saarland" +msgstr "" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "Sassonia" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "" + +#: contrib/localflavor/de/forms.py:16 contrib/localflavor/fi/forms.py:14 +#: contrib/localflavor/fr/forms.py:17 contrib/localflavor/it/forms.py:14 +#, fuzzy +msgid "Enter a zip code in the format XXXXX." +msgstr "Inserire un codice postale nel formato XXXXX o XXXXX-XXXX." + +#: contrib/localflavor/de/forms.py:60 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "Inserire un numero tedesco di carta d'identità valido nel formato XXXXXXXXXXX-XXXXXXX-XXXXXXX-X." + +#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45 +#, fuzzy +msgid "Enter a valid Finnish social security number." +msgstr "Inserire un numero valido di assisstenza sociale finlandese." + +#: contrib/localflavor/jp/forms.py:21 +#, fuzzy +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "Inserire un codice postale nel formato XXXXX o XXXXX-XXXX." + +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:6 +msgid "Iwate" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:16 +msgid "Tokyo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +#, fuzzy +msgid "Kanagawa" +msgstr "Kannada" + +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +#, fuzzy +msgid "Shimane" +msgstr "Modifica" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +#, fuzzy +msgid "Kagawa" +msgstr "Kannada" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +#, fuzzy +msgid "Ehime" +msgstr "Orario" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" +msgstr "" + +#: contrib/localflavor/no/forms.py:15 +#, fuzzy +msgid "Enter a zip code in the format XXXX." +msgstr "Inserire un codice postale nel formato XXXXX o XXXXX-XXXX." + +#: contrib/localflavor/no/forms.py:36 +#, fuzzy +msgid "Enter a valid Norwegian social security number." +msgstr "Inserire un numero decimale valido." + +#: contrib/localflavor/uk/forms.py:18 +msgid "Enter a postcode. A space is required between the two postcode parts." +msgstr "" +"Inserire un codice postale. È obbligatorio uno spazio tra le due parti del " +"codice postale." + +#: contrib/localflavor/us/forms.py:18 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "Inserire un codice postale nel formato XXXXX o XXXXX-XXXX." + +#: contrib/localflavor/us/forms.py:51 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "Inserire un numero di assistenza sociale statunitense valido, nel formato XXX-XX-XXXX." + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "redirigi da" + +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" +"Deve essere un percorso assoluto, senza nome di dominio. Esempio: '/events/" +"search/'." + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "redirigi verso" + +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" +"Può essere un percorso assoluto (come sopra) o una URL completa che inizia " +"con 'http://'." + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "redirezione" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "redirezioni" + +#: contrib/sessions/models.py:68 +msgid "session key" +msgstr "chiave di sessione" + +#: contrib/sessions/models.py:69 +msgid "session data" +msgstr "dati di sessione" + +#: contrib/sessions/models.py:70 +msgid "expire date" +msgstr "data di scadenza" + +#: contrib/sessions/models.py:74 +msgid "session" +msgstr "sessione" + +#: contrib/sessions/models.py:75 +msgid "sessions" +msgstr "sessioni" + +#: contrib/sites/models.py:10 +msgid "domain name" +msgstr "nome di dominio" + +#: contrib/sites/models.py:11 +msgid "display name" +msgstr "nome visualizzato" + +#: contrib/sites/models.py:15 +msgid "site" +msgstr "sito" + +#: contrib/sites/models.py:16 +msgid "sites" +msgstr "siti" + +#: core/validators.py:64 +msgid "This value must contain only letters, numbers and underscores." +msgstr "Questo valore può contenere solo lettere, cifre e sottolineature." + +#: core/validators.py:68 +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "" +"Questo valore può contenere solo lettere, cifre, sottolineature, trattini e " +"barre diagonali." + +#: core/validators.py:72 +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "" +"Questo valore può contenere solo lettere, cifre, sottolineature e trattini." + +#: core/validators.py:76 +msgid "Uppercase letters are not allowed here." +msgstr "Non sono ammesse lettere maiuscole." + +#: core/validators.py:80 +msgid "Lowercase letters are not allowed here." +msgstr "Non sono ammesse lettere minuscole." + +#: core/validators.py:87 +msgid "Enter only digits separated by commas." +msgstr "Inserire solo cifre separate da virgole." + +#: core/validators.py:99 +msgid "Enter valid e-mail addresses separated by commas." +msgstr "Inserire indirizzi e-mail validi separati da virgole." + +#: core/validators.py:103 +msgid "Please enter a valid IP address." +msgstr "Inserire un indirizzo IP valido." + +#: core/validators.py:107 +msgid "Empty values are not allowed here." +msgstr "È necessario inserire un valore." + +#: core/validators.py:111 +msgid "Non-numeric characters aren't allowed here." +msgstr "Sono ammessi soltanto caratteri numerici." + +#: core/validators.py:115 +msgid "This value can't be comprised solely of digits." +msgstr "Questo valore non può essere composto solo da cifre." + +#: core/validators.py:120 newforms/fields.py:128 +msgid "Enter a whole number." +msgstr "Inserire un numero intero." + +#: core/validators.py:124 +msgid "Only alphabetical characters are allowed here." +msgstr "Sono ammessi solo caratteri alfabetici." + +#: core/validators.py:139 +msgid "Year must be 1900 or later." +msgstr "L'anno deve essere 1900 o successivo." + +#: core/validators.py:143 +#, fuzzy, python-format +msgid "Invalid date: %s" +msgstr "Data non valida: %s." + +#: core/validators.py:148 db/models/fields/__init__.py:457 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Inserire una data valida in formato AAAA-MM-GG." + +#: core/validators.py:153 +msgid "Enter a valid time in HH:MM format." +msgstr "Inserire un orario valido in formato OO:MM." + +#: core/validators.py:157 db/models/fields/__init__.py:526 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "Inserire una data/ora valida in formato AAAA-MM-GG OO:MM." + +#: core/validators.py:162 newforms/fields.py:271 +msgid "Enter a valid e-mail address." +msgstr "Inserire un indirizzo e-mail valido." + +#: core/validators.py:174 core/validators.py:445 oldforms/__init__.py:672 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "" +"Non è stato inviato alcun file. Verificare il tipo di codifica della form." + +#: core/validators.py:178 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Caricare un'immagine valida. Il file caricato non è un'immagine o è corrotto." + +#: core/validators.py:185 +#, python-format +msgid "The URL %s does not point to a valid image." +msgstr "La URL %s non punta ad un'immagine valida." + +#: core/validators.py:189 +#, python-format +msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +msgstr "" +"I numeri di telefono devono essere in formato XXX-XXX-XXXX. \"%s\" non è " +"valido." + +#: core/validators.py:197 +#, python-format +msgid "The URL %s does not point to a valid QuickTime video." +msgstr "La URL %s non punta ad un video QuickTime valido." + +#: core/validators.py:201 +msgid "A valid URL is required." +msgstr "Inserire una URL valida." + +#: core/validators.py:215 +#, python-format +msgid "" +"Valid HTML is required. Specific errors are:\n" +"%s" +msgstr "" +"È richiesto HTML valido. Gli errori sono i seguenti:\n" +"%s" + +#: core/validators.py:222 +#, python-format +msgid "Badly formed XML: %s" +msgstr "XML malformato: %s" + +#: core/validators.py:239 +#, python-format +msgid "Invalid URL: %s" +msgstr "URL non valida: %s" + +#: core/validators.py:244 core/validators.py:246 +#, python-format +msgid "The URL %s is a broken link." +msgstr "La URL %s è un link non funzionante." + +#: core/validators.py:252 +msgid "Enter a valid U.S. state abbreviation." +msgstr "Inserire un valido nome di stato USA abbreviato." + +#: 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] "Moderare i termini: la parola %s non è ammessa." +msgstr[1] "Moderare i termini: le parole %s non sono ammesse." + +#: core/validators.py:273 +#, python-format +msgid "This field must match the '%s' field." +msgstr "Questo campo deve corrispondere al campo '%s'." + +#: core/validators.py:292 +msgid "Please enter something for at least one field." +msgstr "Inserire qualcosa in almeno un campo." + +#: core/validators.py:301 core/validators.py:312 +msgid "Please enter both fields or leave them both empty." +msgstr "Inserire entrambi i campi o lasciarli entrambi vuoti." + +#: core/validators.py:320 +#, python-format +msgid "This field must be given if %(field)s is %(value)s" +msgstr "Questo campo è obbligatorio se %(field)s è %(value)s" + +#: core/validators.py:333 +#, python-format +msgid "This field must be given if %(field)s is not %(value)s" +msgstr "Questo campo è obbligatorio se %(field)s non è %(value)s" + +#: core/validators.py:352 +msgid "Duplicate values are not allowed." +msgstr "Non sono ammessi valori duplicati." + +#: core/validators.py:367 +#, fuzzy, python-format +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "Questo valore deve essere compreso tra %s e %s." + +#: core/validators.py:369 +#, python-format +msgid "This value must be at least %s." +msgstr "Questo valore deve essere almeno pari a %s." + +#: core/validators.py:371 +#, python-format +msgid "This value must be no more than %s." +msgstr "Questo valore non deve essere maggiore di %s." + +#: core/validators.py:407 +#, python-format +msgid "This value must be a power of %s." +msgstr "Questo valore deve essere una potenza di %s." + +#: core/validators.py:418 +msgid "Please enter a valid decimal number." +msgstr "Inserire un numero decimale valido." + +#: 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] "Inserire un numero decimale con non più di %s cifra in totale." +msgstr[1] "Inserire un numero decimale con non più di %s cifre in totale." + +#: 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] "" +"Inserire un numero decimale la cui parte intera sia composta da non più di %" +"s cifra." +msgstr[1] "" +"Inserire un numero decimale la cui parte intera sia composta da non più di %" +"s cifre." + +#: 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] "Inserire un decimale con non più di %s cifra decimale." +msgstr[1] "Inserire un decimale con non più di %s cifre decimali." + +#: core/validators.py:438 +#, python-format +msgid "Make sure your uploaded file is at least %s bytes big." +msgstr "Verificare che il file caricato sia grande almeno %s byte." + +#: core/validators.py:439 +#, python-format +msgid "Make sure your uploaded file is at most %s bytes big." +msgstr "Verificare che il file caricato non sia più grande di %s byte." + +#: core/validators.py:456 +msgid "The format for this field is wrong." +msgstr "Il formato di questo campo non è valido." + +#: core/validators.py:471 +msgid "This field is invalid." +msgstr "Questo campo non è valido." + +#: core/validators.py:507 +#, python-format +msgid "Could not retrieve anything from %s." +msgstr "Impossibile recuperare alcunché da %s." + +#: core/validators.py:510 +#, python-format +msgid "" +"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "" +"La URL %(url)s ha restituito un header Content-Type non valido: '%" +"(contenttype)s'." + +#: core/validators.py:543 +#, python-format +msgid "" +"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " +"\"%(start)s\".)" +msgstr "" +"Chiudere il tag %(tag)s a linea %(line)s. (La linea inizia con \"%(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 "" +"Il testo che comincia a linea %(line)s non e' ammesso in questo contesto. " +"(La linea comincia con \"%(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\" a linea %(line)s non è un attributo valido. (La linea comincia " +"con \"%(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>\" a linea %(line)s non è un tag valido. (La linea comincia con " +"\"%(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 a linea %(line)s manca di uno o più attributi richiesti. (La linea " +"comincia con \"%(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 "" +"L'attributo \"%(attr)s\" a linea %(line)s ha un valore non valido. (La linea " +"comincia con \"%(start)s\".)" + +#: db/models/manipulators.py:307 +#, python-format +msgid "%(object)s with this %(type)s already exists for the given %(field)s." +msgstr "%(object)s·con questo·%(type)s·esiste già per questo·%(field)s." + +#: db/models/fields/__init__.py:42 +#, python-format +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "%(optname)s·con questo·%(fieldname)s·esiste già." + +#: db/models/fields/__init__.py:117 db/models/fields/__init__.py:274 +#: db/models/fields/__init__.py:610 db/models/fields/__init__.py:621 +#: newforms/fields.py:80 newforms/fields.py:376 newforms/fields.py:452 +#: newforms/fields.py:463 newforms/models.py:178 oldforms/__init__.py:357 +msgid "This field is required." +msgstr "Questo campo è obbligatorio." + +#: db/models/fields/__init__.py:367 +msgid "This value must be an integer." +msgstr "Questo valore deve essere un intero." + +#: db/models/fields/__init__.py:402 +msgid "This value must be either True or False." +msgstr "Questo valore deve essere True o False." + +#: db/models/fields/__init__.py:423 +msgid "This field cannot be null." +msgstr "Questo campo non può essere nullo." + +#: db/models/fields/__init__.py:630 +msgid "Enter a valid filename." +msgstr "Inserire un nome file valido." + +#: db/models/fields/__init__.py:751 +#, fuzzy +msgid "This value must be either None, True or False." +msgstr "Questo valore deve essere True o False." + +#: db/models/fields/related.py:53 +#, python-format +msgid "Please enter a valid %s." +msgstr "Inserire un %s valido." + +#: db/models/fields/related.py:642 +msgid "Separate multiple IDs with commas." +msgstr "Separare ID multipli con virgole." + +#: db/models/fields/related.py:644 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" +"Tenere premuto \"Control\", o \"Command\" su Mac, per selezionarne più di " +"uno." + +#: 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] "" +"Inserire un ID validi per %(self)s. Il valore %(value)r non è valido." +msgstr[1] "" +"Inserire un ID validi per %(self)s. I valori %(value)r non sono validi." + +#: newforms/fields.py:103 newforms/fields.py:256 +#, python-format +msgid "Ensure this value has at most %d characters." +msgstr "Assicurarsi che questo valore non contenga più di %d caratteri." + +#: newforms/fields.py:105 newforms/fields.py:258 +#, python-format +msgid "Ensure this value has at least %d characters." +msgstr "Assicurarsi che questo valore contenga almeno %d caratteri." + +#: newforms/fields.py:130 +#, python-format +msgid "Ensure this value is less than or equal to %s." +msgstr "Assicurarsi che questo valore sia minore o uguale a %s." + +#: newforms/fields.py:132 +#, python-format +msgid "Ensure this value is greater than or equal to %s." +msgstr "Assicurarsi che questo valore sia maggiore o uguale a %s." + +#: newforms/fields.py:165 +msgid "Enter a valid date." +msgstr "Inserire una data valida." + +#: newforms/fields.py:192 +msgid "Enter a valid time." +msgstr "Inserire un orario valido." + +#: newforms/fields.py:228 +msgid "Enter a valid date/time." +msgstr "Inserire una coppia data/orario valida." + +#: newforms/fields.py:242 +msgid "Enter a valid value." +msgstr "Inserire un valore valido." + +#: newforms/fields.py:289 newforms/fields.py:311 +msgid "Enter a valid URL." +msgstr "Inserire una URL valida." + +#: newforms/fields.py:313 +msgid "This URL appears to be a broken link." +msgstr "Questa URL non sembra funzionare." + +#: newforms/fields.py:362 newforms/models.py:165 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "" +"Selezionare un'opzione valida. La scelta effettuata non compare tra quelle " +"disponibili." + +#: newforms/fields.py:380 newforms/fields.py:456 newforms/models.py:182 +msgid "Enter a list of values." +msgstr "Inserire una lista di valori." + +#: newforms/fields.py:389 newforms/models.py:188 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "Selezionare un'opzione valida;'%s non compare tra quelle disponibili." + +#: 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] "Assicurarsi che il testo sia più corto di %s carattere." msgstr[1] "Assicurarsi che il testo sia più corto di %s caratteri." -#: oldforms/__init__.py:392 +#: oldforms/__init__.py:397 msgid "Line breaks are not allowed here." msgstr "Non sono ammessi a capo manuali." -#: oldforms/__init__.py:493 oldforms/__init__.py:566 oldforms/__init__.py:605 +#: 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 "Selezionare un'opzione valida; '%(data)s' non presente in %(choices)s." -#: oldforms/__init__.py:669 +#: oldforms/__init__.py:674 msgid "The submitted file is empty." msgstr "Il file inviato è vuoto." -#: oldforms/__init__.py:725 +#: oldforms/__init__.py:730 msgid "Enter a whole number between -32,768 and 32,767." msgstr "Inserire un numero intero compreso tra -32.768 e 32.767." -#: oldforms/__init__.py:735 +#: oldforms/__init__.py:740 msgid "Enter a positive number." msgstr "Inserire un numero positivo." -#: oldforms/__init__.py:745 +#: oldforms/__init__.py:750 msgid "Enter a whole number between 0 and 32,767." msgstr "Inserire un numero intero compreso tra 0 e 32.767." -#: views/generic/create_update.py:43 -#, python-format -msgid "The %(verbose_name)s was created successfully." -msgstr "%(verbose_name)s è stato creato correttamente." +#: template/defaultfilters.py:491 +msgid "yes,no,maybe" +msgstr "sì,no,forse" -#: views/generic/create_update.py:117 -#, python-format -msgid "The %(verbose_name)s was updated successfully." -msgstr "%(verbose_name)s è stato aggiornato correttamente." +#: utils/dateformat.py:40 +msgid "p.m." +msgstr "" -#: views/generic/create_update.py:184 -#, python-format -msgid "The %(verbose_name)s was deleted." -msgstr "%(verbose_name)s è stato cancellato." +#: 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 "mezzanotte" + +#: utils/dateformat.py:97 +msgid "noon" +msgstr "mezzogiorno" #: utils/dates.py:6 msgid "Monday" @@ -2214,84 +2777,40 @@ msgid_plural "minutes" msgstr[0] "minuto" msgstr[1] "minuti" -#: utils/translation/trans_real.py:362 +#: utils/translation/trans_real.py:358 msgid "DATE_FORMAT" msgstr "j F Y" -#: utils/translation/trans_real.py:363 +#: utils/translation/trans_real.py:359 msgid "DATETIME_FORMAT" msgstr "j F Y, H:i" -#: utils/translation/trans_real.py:364 +#: utils/translation/trans_real.py:360 msgid "TIME_FORMAT" msgstr "H:i" -#: utils/translation/trans_real.py:380 +#: utils/translation/trans_real.py:376 msgid "YEAR_MONTH_FORMAT" msgstr "Y F" -#: utils/translation/trans_real.py:381 +#: utils/translation/trans_real.py:377 msgid "MONTH_DAY_FORMAT" msgstr "F j" -#: template/defaultfilters.py:490 -msgid "yes,no,maybe" -msgstr "sì,no,forse" - -#: newforms/fields.py:101 newforms/fields.py:254 +#: views/generic/create_update.py:43 #, python-format -msgid "Ensure this value has at most %d characters." -msgstr "Assicurarsi che questo valore non contenga più di %d caratteri." +msgid "The %(verbose_name)s was created successfully." +msgstr "%(verbose_name)s è stato creato correttamente." -#: newforms/fields.py:103 newforms/fields.py:256 +#: views/generic/create_update.py:117 #, python-format -msgid "Ensure this value has at least %d characters." -msgstr "Assicurarsi che questo valore contenga almeno %d caratteri." +msgid "The %(verbose_name)s was updated successfully." +msgstr "%(verbose_name)s è stato aggiornato correttamente." -#: newforms/fields.py:128 +#: views/generic/create_update.py:184 #, python-format -msgid "Ensure this value is less than or equal to %s." -msgstr "Assicurarsi che questo valore sia minore o uguale a %s." - -#: newforms/fields.py:130 -#, python-format -msgid "Ensure this value is greater than or equal to %s." -msgstr "Assicurarsi che questo valore sia maggiore o uguale a %s." - -#: newforms/fields.py:163 -msgid "Enter a valid date." -msgstr "Inserire una data valida." - -#: newforms/fields.py:190 -msgid "Enter a valid time." -msgstr "Inserire un orario valido." - -#: newforms/fields.py:226 -msgid "Enter a valid date/time." -msgstr "Inserire una coppia data/orario valida." - -#: newforms/fields.py:240 -msgid "Enter a valid value." -msgstr "Inserire un valore valido." - -#: newforms/fields.py:287 newforms/fields.py:309 -msgid "Enter a valid URL." -msgstr "Inserire una URL valida." - -#: newforms/fields.py:311 -msgid "This URL appears to be a broken link." -msgstr "Questa URL non sembra funzionare." - -#: newforms/fields.py:360 newforms/models.py:164 -msgid "Select a valid choice. That choice is not one of the available choices." -msgstr "Selezionare un'opzione valida. La scelta effettuata non compare tra quelle disponibili." - -#: newforms/fields.py:378 newforms/fields.py:454 newforms/models.py:181 -msgid "Enter a list of values." -msgstr "Inserire una lista di valori." - -#: newforms/fields.py:387 newforms/models.py:187 -#, python-format -msgid "Select a valid choice. %s is not one of the available choices." -msgstr "Selezionare un'opzione valida;'%s non compare tra quelle disponibili." +msgid "The %(verbose_name)s was deleted." +msgstr "%(verbose_name)s è stato cancellato." +#~ msgid "Have you forgotten your password?" +#~ msgstr "Hai dimenticato la password?" diff --git a/django/conf/locale/ko/LC_MESSAGES/django.mo b/django/conf/locale/ko/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..58e97b496e Binary files /dev/null and b/django/conf/locale/ko/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/ko/LC_MESSAGES/django.po b/django/conf/locale/ko/LC_MESSAGES/django.po new file mode 100644 index 0000000000..476f7316ba --- /dev/null +++ b/django/conf/locale/ko/LC_MESSAGES/django.po @@ -0,0 +1,2797 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Django 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-04-24 12:33+0900\n" +"PO-Revision-Date: 2007-04-06 11:04+0900\n" +"Last-Translator: Sung-Jin Hong \n" +"Language-Team: Korean\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: db/models/manipulators.py:307 +#, python-format +msgid "%(object)s with this %(type)s already exists for the given %(field)s." +msgstr "%(field)s 에 입력된 값은 %(type)s 의 %(object)s 에 이미 존재합니다." + +#: db/models/manipulators.py:308 contrib/admin/views/main.py:335 +#: contrib/admin/views/main.py:337 contrib/admin/views/main.py:339 +msgid "and" +msgstr "또한" + +#: db/models/fields/__init__.py:42 +#, python-format +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "%(fieldname)s 의 %(optname)s (은)는 이미 존재합니다." + +#: db/models/fields/__init__.py:117 db/models/fields/__init__.py:274 +#: db/models/fields/__init__.py:610 db/models/fields/__init__.py:621 +#: newforms/fields.py:80 newforms/fields.py:376 newforms/fields.py:452 +#: newforms/fields.py:463 newforms/models.py:178 oldforms/__init__.py:357 +msgid "This field is required." +msgstr "필수 항목입니다." + +#: db/models/fields/__init__.py:367 +msgid "This value must be an integer." +msgstr "정수 값을 사용하세요." + +#: db/models/fields/__init__.py:402 +msgid "This value must be either True or False." +msgstr "True 또는 False 값을 사용하세요." + +#: db/models/fields/__init__.py:423 +msgid "This field cannot be null." +msgstr "이 필드는 null 값은 사용할 수 없습니다. " + +#: db/models/fields/__init__.py:457 core/validators.py:148 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "날짜는 YYYY-MM-DD 형식으로 입력하세요." + +#: db/models/fields/__init__.py:526 core/validators.py:157 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "날짜/시각을 YYYY-MM-DD HH:MM 형식으로 입력하세요." + +#: db/models/fields/__init__.py:630 +msgid "Enter a valid filename." +msgstr "올바른 파일명을 입력하세요." + +#: db/models/fields/__init__.py:751 +msgid "This value must be either None, True or False." +msgstr "None, True 또는 False 값을 사용하세요." + +#: db/models/fields/related.py:53 +#, python-format +msgid "Please enter a valid %s." +msgstr "올바른 %s (을)를 입력하세요." + +#: db/models/fields/related.py:642 +msgid "Separate multiple IDs with commas." +msgstr "복수 ID는 콤마로 구분해 주세요." + +#: db/models/fields/related.py:644 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" +"복수 선택 시에는 \"Control\" 키를 누른 상태에서 선택해 주세요.(Mac은 " +"\"Command\" 키)" + +#: db/models/fields/related.py:691 +#, python-format +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "" +"Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "" +"올바른 %(self)s ID를 입력해 주세요. %(value)r (은)는 적절치 않습니다." +msgstr[1] "" +"올바른 %(self)s ID를 입력해 주세요. %(value)r (은)는 적절치 않습니다." + +#: conf/global_settings.py:39 +msgid "Arabic" +msgstr "아랍어" + +#: conf/global_settings.py:40 +msgid "Bengali" +msgstr "방글라데시어" + +#: conf/global_settings.py:41 +msgid "Catalan" +msgstr "카탈로니아어" + +#: conf/global_settings.py:42 +msgid "Czech" +msgstr "체코어" + +#: conf/global_settings.py:43 +msgid "Welsh" +msgstr "웨일즈어" + +#: conf/global_settings.py:44 +msgid "Danish" +msgstr "덴마크어" + +#: conf/global_settings.py:45 +msgid "German" +msgstr "독일어" + +#: conf/global_settings.py:46 +msgid "Greek" +msgstr "그리스어" + +#: conf/global_settings.py:47 +msgid "English" +msgstr "영어" + +#: conf/global_settings.py:48 +msgid "Spanish" +msgstr "스페인어" + +#: conf/global_settings.py:49 +msgid "Argentinean Spanish" +msgstr "아르헨티나_스페인어" + +#: conf/global_settings.py:50 +msgid "Finnish" +msgstr "핀란드어" + +#: conf/global_settings.py:51 +msgid "French" +msgstr "프랑스어" + +#: conf/global_settings.py:52 +msgid "Galician" +msgstr "갈리시아어" + +#: conf/global_settings.py:53 +msgid "Hungarian" +msgstr "헝가리어" + +#: conf/global_settings.py:54 +msgid "Hebrew" +msgstr "히브리어" + +#: conf/global_settings.py:55 +msgid "Icelandic" +msgstr "아이슬란드어" + +#: conf/global_settings.py:56 +msgid "Italian" +msgstr "이탈리아어" + +#: conf/global_settings.py:57 +msgid "Japanese" +msgstr "일본어" + +#: conf/global_settings.py:58 +msgid "Korean" +msgstr "한국어" + +#: conf/global_settings.py:59 +msgid "Kannada" +msgstr "칸나다어" + +#: conf/global_settings.py:60 +msgid "Latvian" +msgstr "라트비아어" + +#: conf/global_settings.py:61 +msgid "Macedonian" +msgstr "마케도니아어" + +#: conf/global_settings.py:62 +msgid "Dutch" +msgstr "네덜란드어" + +#: conf/global_settings.py:63 +msgid "Norwegian" +msgstr "노르웨이어" + +#: conf/global_settings.py:64 +msgid "Polish" +msgstr "폴란드어" + +#: conf/global_settings.py:65 +msgid "Portugese" +msgstr "포르투갈어" + +#: conf/global_settings.py:66 +msgid "Brazilian" +msgstr "브라질어" + +#: conf/global_settings.py:67 +msgid "Romanian" +msgstr "루마니아어" + +#: conf/global_settings.py:68 +msgid "Russian" +msgstr "러시아어" + +#: conf/global_settings.py:69 +msgid "Slovak" +msgstr "슬로바키아어" + +#: conf/global_settings.py:70 +msgid "Slovenian" +msgstr "슬로베니아어" + +#: conf/global_settings.py:71 +msgid "Serbian" +msgstr "세르비아어" + +#: conf/global_settings.py:72 +msgid "Swedish" +msgstr "스웨덴어" + +#: conf/global_settings.py:73 +msgid "Tamil" +msgstr "타밀어" + +#: conf/global_settings.py:74 +msgid "Telugu" +msgstr "텔루구어" + +#: conf/global_settings.py:75 +msgid "Turkish" +msgstr "터키어" + +#: conf/global_settings.py:76 +msgid "Ukrainian" +msgstr "우크라이나어" + +#: conf/global_settings.py:77 +msgid "Simplified Chinese" +msgstr "중국어 간체" + +#: conf/global_settings.py:78 +msgid "Traditional Chinese" +msgstr "중국어 번체" + +#: core/validators.py:64 +msgid "This value must contain only letters, numbers and underscores." +msgstr "문자, 숫자, '_'만 가능합니다." + +#: core/validators.py:68 +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "문자, 숫자, '_', '-', '/'만 가능합니다." + +#: core/validators.py:72 +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "문자, 숫자, '_', '-'만 가능합니다." + +#: core/validators.py:76 +msgid "Uppercase letters are not allowed here." +msgstr "대문자는 사용할 수 없습니다." + +#: core/validators.py:80 +msgid "Lowercase letters are not allowed here." +msgstr "소문자는 사용할 수 없습니다." + +#: core/validators.py:87 +msgid "Enter only digits separated by commas." +msgstr "콤마로 구분된 숫자만 입력하세요." + +#: core/validators.py:99 +msgid "Enter valid e-mail addresses separated by commas." +msgstr "콤마로 구분된 이메일 주소만 입력하세요." + +#: core/validators.py:103 +msgid "Please enter a valid IP address." +msgstr "올바른 IP 주소를 입력하세요." + +#: core/validators.py:107 +msgid "Empty values are not allowed here." +msgstr "반드시 입력하세요." + +#: core/validators.py:111 +msgid "Non-numeric characters aren't allowed here." +msgstr "숫자만 사용할 수 있습니다." + +#: core/validators.py:115 +msgid "This value can't be comprised solely of digits." +msgstr "숫자만 사용할 수는 없습니다." + +#: core/validators.py:120 newforms/fields.py:128 +msgid "Enter a whole number." +msgstr "정수를 입력하세요." + +#: core/validators.py:124 +msgid "Only alphabetical characters are allowed here." +msgstr "문자만 사용할 수 있습니다." + +#: core/validators.py:139 +msgid "Year must be 1900 or later." +msgstr "1900년 이후의 연도만 가능" + +#: core/validators.py:143 +#, python-format +msgid "Invalid date: %s" +msgstr "날짜가 부적절합니다.: %s" + +#: core/validators.py:153 +msgid "Enter a valid time in HH:MM format." +msgstr "시각은 HH:MM 형식으로 입력하세요." + +#: core/validators.py:162 newforms/fields.py:271 +msgid "Enter a valid e-mail address." +msgstr "올바른 이메일 주소를 입력하세요." + +#: core/validators.py:174 core/validators.py:445 oldforms/__init__.py:672 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "등록된 파일이 없습니다. 인코딩 형식을 확인하세요." + +#: core/validators.py:178 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"올바른 이미지를 업로드하세요.업로드하신 파일은 이미지 파일이 아니거나 파일이 " +"깨져 있습니다." + +#: core/validators.py:185 +#, python-format +msgid "The URL %s does not point to a valid image." +msgstr "해당 URL %s (은)는 올바른 이미지가 아닙니다." + +#: core/validators.py:189 +#, python-format +msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +msgstr "" +"전화번호는 xxx-xxx-xxxx 형식으로 입력하세요. \"%s\" (은)는 부적절합니다." + +#: core/validators.py:197 +#, python-format +msgid "The URL %s does not point to a valid QuickTime video." +msgstr "해당 URL %s (은)는 올바른 QuickTime video가 아닙니다." + +#: core/validators.py:201 +msgid "A valid URL is required." +msgstr "올바른 URL을 입력하세요." + +#: core/validators.py:215 +#, python-format +msgid "" +"Valid HTML is required. Specific errors are:\n" +"%s" +msgstr "" +"올바른 HTML을 입력하세요. 오류:\n" +"%s" + +#: core/validators.py:222 +#, python-format +msgid "Badly formed XML: %s" +msgstr "잘못된 형식의 XML: %s" + +#: core/validators.py:239 +#, python-format +msgid "Invalid URL: %s" +msgstr "부적절한 URL: %s" + +#: core/validators.py:244 core/validators.py:246 +#, python-format +msgid "The URL %s is a broken link." +msgstr "해당 URL %s 링크가 깨졌습니다." + +#: core/validators.py:252 +msgid "Enter a valid U.S. state abbreviation." +msgstr "올바른 미국의 주의 약어를 입력하세요." + +#: 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 (은)는 사용하실 수 없습니다." +msgstr[1] "비속어/욕설입니다. %s (은)는 사용하실 수 없습니다." + +#: core/validators.py:273 +#, python-format +msgid "This field must match the '%s' field." +msgstr "이 필드는 '%s' 필드와 일치해야 합니다." + +#: core/validators.py:292 +msgid "Please enter something for at least one field." +msgstr "하나 이상의 필드에 입력해 주세요." + +#: core/validators.py:301 core/validators.py:312 +msgid "Please enter both fields or leave them both empty." +msgstr "양쪽 필드에 모두 입력하시거나, 모두 빈칸으로 해 주십시오." + +#: core/validators.py:320 +#, python-format +msgid "This field must be given if %(field)s is %(value)s" +msgstr "%(field)s (이)가 %(value)s 일 경우, 이 필드에 반드시 입력해 주세요." + +#: core/validators.py:333 +#, python-format +msgid "This field must be given if %(field)s is not %(value)s" +msgstr "" +"%(field)s (이)가 %(value)s (이)가 아닐 경우, 이 필드에 반드시 입력해 주세요." + +#: core/validators.py:352 +msgid "Duplicate values are not allowed." +msgstr "중복해서 사용할 수 없습니다." + +#: core/validators.py:367 +#, python-format +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "%(lower)s 에서 %(upper)s 사이의 값을 사용해 주세요." + +#: core/validators.py:369 +#, python-format +msgid "This value must be at least %s." +msgstr "%s 이상의 값을 사용해 주세요." + +#: core/validators.py:371 +#, python-format +msgid "This value must be no more than %s." +msgstr "%s 이하의 값을 사용해 주세요." + +#: core/validators.py:407 +#, python-format +msgid "This value must be a power of %s." +msgstr "%s 제곱의 값을 사용해 주세요." + +#: core/validators.py:418 +msgid "Please enter a valid decimal number." +msgstr "10진수를 사용해 주세요." + +#: core/validators.py:422 +#, python-format +msgid "Please enter a valid decimal number with at most %s total digit." +msgid_plural "" +"Please enter a valid decimal number with at most %s total digits." +msgstr[0] "전체 %s 자리 이하의 10진수를 입력하세요." +msgstr[1] "전체 %s 자리 이하의 10진수를 입력하세요." + +#: core/validators.py:425 +#, python-format +msgid "" +"Please enter a valid decimal number with a whole part of at most %s digit." +msgid_plural "" +"Please enter a valid decimal number with a whole part of at most %s digits." +msgstr[0] "정수부분이 %s 자리 이하인 10진수를 입력하세요." +msgstr[1] "정수부분이 %s 자리 이하인 10진수를 입력하세요." + +#: 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] "소수부분이 %s 자리 이하인 10진수를 입력하세요." +msgstr[1] "소수부분이 %s 자리 이하인 10진수를 입력하세요." + +#: core/validators.py:438 +#, python-format +msgid "Make sure your uploaded file is at least %s bytes big." +msgstr "업로드 파일은 %s bytes 이상입니다." + +#: core/validators.py:439 +#, python-format +msgid "Make sure your uploaded file is at most %s bytes big." +msgstr "업로드 파일은 %s bytes 이하입니다." + +#: core/validators.py:456 +msgid "The format for this field is wrong." +msgstr "이 필드의 형식이 잘못되었습니다." + +#: core/validators.py:471 +msgid "This field is invalid." +msgstr "필드가 올바르지 않습니다." + +#: core/validators.py:507 +#, python-format +msgid "Could not retrieve anything from %s." +msgstr "%s 에서 검색된 내용이 없습니다." + +#: core/validators.py:510 +#, python-format +msgid "" +"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "" +"URL %(url)s (이)가 부적절한 Content-Type heade '%(contenttype)s' (을)를 반환" +"했습니다." + +#: core/validators.py:543 +#, 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\")" + +#: 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 "" +"%(line)s 줄의 내용으로 시작하는 텍스트는 사용할 수 없습니다.(시작줄 : \"%" +"(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 "" +"%(line)s 줄의 \"%(attr)s\" (은)는 부적절한 속성입니다.(시작줄 : \"%(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 "" +"%(line)s 줄의 \"<%(tag)s>\" (은)는 부적절한 태그입니다.(시작줄 : \"%(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 "" +"%(line)s 줄의 태그는 하나 이상의 필수 속성이 생략되어 있습니다.(시작줄 : \"%" +"(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 "" +"%(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 (이)가 삭제되었습니다." + +#: 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 "1월" + +#: utils/dates.py:14 +msgid "February" +msgstr "2월" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "March" +msgstr "3월" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "April" +msgstr "4월" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "May" +msgstr "5월" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "June" +msgstr "6월" + +#: utils/dates.py:15 utils/dates.py:27 +msgid "July" +msgstr "7월" + +#: utils/dates.py:15 +msgid "August" +msgstr "8월" + +#: utils/dates.py:15 +msgid "September" +msgstr "9월" + +#: utils/dates.py:15 +msgid "October" +msgstr "10월" + +#: utils/dates.py:15 +msgid "November" +msgstr "11월" + +#: utils/dates.py:16 +msgid "December" +msgstr "12월" + +#: utils/dates.py:19 +msgid "jan" +msgstr "1월" + +#: utils/dates.py:19 +msgid "feb" +msgstr "2월" + +#: utils/dates.py:19 +msgid "mar" +msgstr "3월" + +#: utils/dates.py:19 +msgid "apr" +msgstr "4월" + +#: utils/dates.py:19 +msgid "may" +msgstr "5월" + +#: utils/dates.py:19 +msgid "jun" +msgstr "6월" + +#: utils/dates.py:20 +msgid "jul" +msgstr "7월" + +#: utils/dates.py:20 +msgid "aug" +msgstr "8월" + +#: utils/dates.py:20 +msgid "sep" +msgstr "9월" + +#: utils/dates.py:20 +msgid "oct" +msgstr "10월" + +#: utils/dates.py:20 +msgid "nov" +msgstr "11월" + +#: utils/dates.py:20 +msgid "dec" +msgstr "12월" + +#: utils/dates.py:27 +msgid "Jan." +msgstr "1월" + +#: utils/dates.py:27 +msgid "Feb." +msgstr "2월" + +#: utils/dates.py:28 +msgid "Aug." +msgstr "8월" + +#: utils/dates.py:28 +msgid "Sept." +msgstr "9월" + +#: utils/dates.py:28 +msgid "Oct." +msgstr "10월" + +#: utils/dates.py:28 +msgid "Nov." +msgstr "11월" + +#: utils/dates.py:28 +msgid "Dec." +msgstr "12월" + +#: utils/timesince.py:12 +msgid "year" +msgid_plural "years" +msgstr[0] "년" +msgstr[1] "년" + +#: utils/timesince.py:13 +msgid "month" +msgid_plural "months" +msgstr[0] "월" +msgstr[1] "월" + +#: utils/timesince.py:14 +msgid "week" +msgid_plural "weeks" +msgstr[0] "주" +msgstr[1] "주" + +#: utils/timesince.py:15 +msgid "day" +msgid_plural "days" +msgstr[0] "일" +msgstr[1] "일" + +#: utils/timesince.py:16 +msgid "hour" +msgid_plural "hours" +msgstr[0] "시간" +msgstr[1] "시간" + +#: utils/timesince.py:17 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "분" +msgstr[1] "분" + +#: utils/timesince.py:40 +#, python-format +msgid "%d milliseconds" +msgstr "%d밀리초" + +#: utils/timesince.py:41 +#, python-format +msgid "%(number)d %(type)s" +msgstr "%(number)d%(type)s" + +#: utils/timesince.py:47 +#, python-format +msgid ", %(number)d %(type)s" +msgstr ", %(number)d%(type)s" + +#: 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:358 +msgid "DATE_FORMAT" +msgstr "" + +#: utils/translation/trans_real.py:359 +msgid "DATETIME_FORMAT" +msgstr "" + +#: utils/translation/trans_real.py:360 +msgid "TIME_FORMAT" +msgstr "" + +#: utils/translation/trans_real.py:376 +msgid "YEAR_MONTH_FORMAT" +msgstr "" + +#: utils/translation/trans_real.py:377 +msgid "MONTH_DAY_FORMAT" +msgstr "" + +#: newforms/fields.py:103 newforms/fields.py:256 +#, python-format +msgid "Ensure this value has at most %d characters." +msgstr "%d 자 이하로 입력해 주세요." + +#: newforms/fields.py:105 newforms/fields.py:258 +#, python-format +msgid "Ensure this value has at least %d characters." +msgstr "%d 자 이상 입력해 주세요." + +#: newforms/fields.py:130 +#, python-format +msgid "Ensure this value is less than or equal to %s." +msgstr "%s 자 이하로 입력해 주세요." + +#: newforms/fields.py:132 +#, python-format +msgid "Ensure this value is greater than or equal to %s." +msgstr "%s 자 이상 입력해 주세요." + +#: newforms/fields.py:165 +msgid "Enter a valid date." +msgstr "올바른 날짜를 입력하세요." + +#: newforms/fields.py:192 +msgid "Enter a valid time." +msgstr "올바른 시각을 입력하세요." + +#: newforms/fields.py:228 +msgid "Enter a valid date/time." +msgstr "올바른 날짜/시각을 입력하세요." + +#: newforms/fields.py:242 +msgid "Enter a valid value." +msgstr "올바른 값을 입력하세요." + +#: newforms/fields.py:289 newforms/fields.py:311 +msgid "Enter a valid URL." +msgstr "올바른 URL을 입력하세요." + +#: newforms/fields.py:313 +msgid "This URL appears to be a broken link." +msgstr "해당 URL의 링크가 잘못 되어 있습니다." + +#: newforms/fields.py:364 newforms/models.py:165 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "올바르게 선택해 주세요. 선택하신 것이 선택가능항목에 없습니다." + +#: newforms/fields.py:380 newforms/fields.py:456 newforms/models.py:182 +msgid "Enter a list of values." +msgstr "리스트를 입력하세요." + +#: newforms/fields.py:389 newforms/models.py:188 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "올바르게 선택해 주세요. %s (이)가 선택가능항목에 없습니다." + +#: newforms/widgets.py:180 contrib/admin/filterspecs.py:150 +#: oldforms/__init__.py:577 +msgid "Unknown" +msgstr "알 수 없습니다." + +#: newforms/widgets.py:180 contrib/admin/filterspecs.py:143 +#: oldforms/__init__.py:577 +msgid "Yes" +msgstr "예" + +#: newforms/widgets.py:180 contrib/admin/filterspecs.py:143 +#: oldforms/__init__.py:577 +msgid "No" +msgstr "아니오" + +#: contrib/contenttypes/models.py:36 +msgid "python model class name" +msgstr "python 모델 클래스 명" + +#: contrib/contenttypes/models.py:39 +msgid "content type" +msgstr "콘텐츠 타입" + +#: contrib/contenttypes/models.py:40 +msgid "content types" +msgstr "콘텐츠 타입(들)" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "th" +msgstr "번째" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "st" +msgstr "번째" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "nd" +msgstr "번째" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "rd" +msgstr "번째" + +#: contrib/humanize/templatetags/humanize.py:47 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "(value).1f" +msgstr[1] "(value).1f" + +#: contrib/humanize/templatetags/humanize.py:50 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "%(value).1f" +msgstr[1] "%(value).1f" + +#: contrib/humanize/templatetags/humanize.py:53 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "%(value).1f" +msgstr[1] "%(value).1f" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "one" +msgstr "1" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "two" +msgstr "2" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "three" +msgstr "3" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "four" +msgstr "4" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "five" +msgstr "5" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "six" +msgstr "6" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "seven" +msgstr "7" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "eight" +msgstr "8" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "nine" +msgstr "9" + +#: contrib/auth/views.py:39 +msgid "Logged out" +msgstr "로그 아웃" + +#: contrib/auth/models.py:38 contrib/auth/models.py:58 +msgid "name" +msgstr "이름" + +#: contrib/auth/models.py:40 +msgid "codename" +msgstr "코드명" + +#: contrib/auth/models.py:43 +msgid "permission" +msgstr "허가" + +#: contrib/auth/models.py:44 contrib/auth/models.py:59 +msgid "permissions" +msgstr "허가" + +#: contrib/auth/models.py:62 +msgid "group" +msgstr "그룹" + +#: contrib/auth/models.py:63 contrib/auth/models.py:103 +msgid "groups" +msgstr "그룹" + +#: contrib/auth/models.py:93 +msgid "username" +msgstr "사용자명" + +#: contrib/auth/models.py:93 +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "필수항목입니다. 30자 이내로 입력하세요.(알파벳, 숫자, '_' 만 가능)" + +#: contrib/auth/models.py:94 +msgid "first name" +msgstr "이름" + +#: contrib/auth/models.py:95 +msgid "last name" +msgstr "성" + +#: contrib/auth/models.py:96 +msgid "e-mail address" +msgstr "이메일 주소" + +#: contrib/auth/models.py:97 +msgid "password" +msgstr "비밀번호" + +#: contrib/auth/models.py:97 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "" +"'[algo]$[salt]$[hexdigest]' 또는 비밀번호 변경" + +#: contrib/auth/models.py:98 +msgid "staff status" +msgstr "스태프 권한" + +#: contrib/auth/models.py:98 +msgid "Designates whether the user can log into this admin site." +msgstr "사용자가 관리사이트에 로그인이 가능한지를 나타냅니다." + +#: contrib/auth/models.py:99 +msgid "active" +msgstr "활성" + +#: contrib/auth/models.py:99 +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "사용자가 'Django 관리'에 로그인이 가능한지를 나타냅니다." + +#: contrib/auth/models.py:100 +msgid "superuser status" +msgstr "최상위 사용자 권한" + +#: contrib/auth/models.py:100 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "해당 사용자에게 모든 권한을 허가합니다." + +#: contrib/auth/models.py:101 +msgid "last login" +msgstr "마지막 로그인" + +#: contrib/auth/models.py:102 +msgid "date joined" +msgstr "등록일" + +#: contrib/auth/models.py:104 +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:105 +msgid "user permissions" +msgstr "사용자 권한" + +#: contrib/auth/models.py:109 +msgid "user" +msgstr "사용자" + +#: contrib/auth/models.py:110 +msgid "users" +msgstr "사용자(들)" + +#: contrib/auth/models.py:116 +msgid "Personal info" +msgstr "개인정보" + +#: contrib/auth/models.py:117 +msgid "Permissions" +msgstr "권한" + +#: contrib/auth/models.py:118 +msgid "Important dates" +msgstr "중요한 일정" + +#: contrib/auth/models.py:119 +msgid "Groups" +msgstr "그룹" + +#: contrib/auth/models.py:263 +msgid "message" +msgstr "메시지" + +#: contrib/auth/models.py:276 +#, fuzzy +msgid "AnonymousUser" +msgstr "익명사용자" + +#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 +msgid "The two password fields didn't match." +msgstr "비밀번호가 일치하지 않습니다." + +#: contrib/auth/forms.py:25 +msgid "A user with that username already exists." +msgstr "해당 사용자명은 이미 존재합니다." + +#: contrib/auth/forms.py:53 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "" +"사용하시는 브라우저가 쿠키를 허용하지 않습니다.로그인하기 위해서는 쿠키 사용" +"이 필요합니다." + +#: contrib/auth/forms.py:60 contrib/admin/views/decorators.py:10 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "사용자명과 비밀번호를 입력하세요.(대, 소문자 구별)" + +#: contrib/auth/forms.py:62 +msgid "This account is inactive." +msgstr "이 계정은 유효하지 않습니다." + +#: contrib/auth/forms.py:85 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "" +"이메일주소와 일치하는 사용자가 없습니다.이 이메일주소로 등록하셨습니까?" + +#: contrib/auth/forms.py:117 +msgid "The two 'new password' fields didn't match." +msgstr "새로운 비밀번호가 일치하지 않습니다." + +#: contrib/auth/forms.py:124 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "기존 비밀번호를 잘못 입력하셨습니다. 다시 입력해 주세요." + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "에서 재전송" + +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "도메인명을 제외한 절대경로로 입력하세요. 예: '/events/search/'" + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "(으)로 재전송" + +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "절대경로와 URL('http://' 포함) 모두 가능합니다." + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "재전송" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "재전송" + +#: contrib/comments/models.py:67 contrib/comments/models.py:166 +msgid "object ID" +msgstr "오브젝트 ID" + +#: contrib/comments/models.py:68 +msgid "headline" +msgstr "최근 정보" + +#: contrib/comments/models.py:69 contrib/comments/models.py:90 +#: contrib/comments/models.py:167 +msgid "comment" +msgstr "코멘트" + +#: contrib/comments/models.py:70 +msgid "rating #1" +msgstr "rating #1" + +#: contrib/comments/models.py:71 +msgid "rating #2" +msgstr "rating #2" + +#: contrib/comments/models.py:72 +msgid "rating #3" +msgstr "rating #3" + +#: contrib/comments/models.py:73 +msgid "rating #4" +msgstr "rating #4" + +#: contrib/comments/models.py:74 +msgid "rating #5" +msgstr "rating #5" + +#: contrib/comments/models.py:75 +msgid "rating #6" +msgstr "rating #6" + +#: contrib/comments/models.py:76 +msgid "rating #7" +msgstr "rating #7" + +#: contrib/comments/models.py:77 +msgid "rating #8" +msgstr "rating #8" + +#: contrib/comments/models.py:82 +msgid "is valid rating" +msgstr "올바른 레이팅입니다." + +#: contrib/comments/models.py:83 contrib/comments/models.py:169 +msgid "date/time submitted" +msgstr "날짜/시간 확인" + +#: contrib/comments/models.py:84 contrib/comments/models.py:170 +msgid "is public" +msgstr "공개합니다." + +#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304 +msgid "IP address" +msgstr "IP 주소" + +#: contrib/comments/models.py:86 +msgid "is removed" +msgstr "삭제합니다." + +#: contrib/comments/models.py:86 +msgid "" +"Check this box if the comment is inappropriate. A \"This comment has been " +"removed\" message will be displayed instead." +msgstr "" +"코멘트가 부적절한 경우 체크하세요. \"코멘트가 삭제되었습니다.\" 메시지가 표시" +"됩니다." + +#: contrib/comments/models.py:91 +msgid "comments" +msgstr "코멘트(들)" + +#: contrib/comments/models.py:131 contrib/comments/models.py:207 +msgid "Content object" +msgstr "콘텐츠 오브젝트" + +#: contrib/comments/models.py:159 +#, python-format +msgid "" +"Posted by %(user)s at %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" +msgstr "" +"%(user)s (이)가 %(date)s 등록\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" + +#: contrib/comments/models.py:168 +msgid "person's name" +msgstr "사용자 이름" + +#: contrib/comments/models.py:171 +msgid "ip address" +msgstr "IP 주소" + +#: contrib/comments/models.py:173 +msgid "approved by staff" +msgstr "스태프 승인" + +#: contrib/comments/models.py:176 +msgid "free comment" +msgstr "프리 코멘트" + +#: contrib/comments/models.py:177 +msgid "free comments" +msgstr "프리 코멘트(들)" + +#: contrib/comments/models.py:233 +msgid "score" +msgstr "스코어" + +#: contrib/comments/models.py:234 +msgid "score date" +msgstr "스코어 날짜" + +#: contrib/comments/models.py:237 +msgid "karma score" +msgstr "카르마 스코어" + +#: contrib/comments/models.py:238 +msgid "karma scores" +msgstr "카르마 스코어" + +#: contrib/comments/models.py:242 +#, python-format +msgid "%(score)d rating by %(user)s" +msgstr "%(user)s (이)가 %(score)d 점 부여했습니다." + +#: contrib/comments/models.py:258 +#, python-format +msgid "" +"This comment was flagged by %(user)s:\n" +"\n" +"%(text)s" +msgstr "" +"%(user)s:\n" +"\n" +"%(text)s" + +#: contrib/comments/models.py:265 +msgid "flag date" +msgstr "플래그 날짜" + +#: contrib/comments/models.py:268 +msgid "user flag" +msgstr "사용자 플래그" + +#: contrib/comments/models.py:269 +msgid "user flags" +msgstr "사용자 플래그" + +#: contrib/comments/models.py:273 +#, python-format +msgid "Flag by %r" +msgstr "%r (으)로 플래그" + +#: contrib/comments/models.py:278 +msgid "deletion date" +msgstr "삭제일" + +#: contrib/comments/models.py:280 +msgid "moderator deletion" +msgstr "" + +#: contrib/comments/models.py:281 +msgid "moderator deletions" +msgstr "" + +#: contrib/comments/models.py:285 +#, python-format +msgid "Moderator deletion by %r" +msgstr "" + +#: contrib/comments/views/karma.py:19 +msgid "Anonymous users cannot vote" +msgstr "미등록 사용자는 투표할 수 없습니다." + +#: contrib/comments/views/karma.py:23 +msgid "Invalid comment ID" +msgstr "코멘트 ID가 부적절합니다." + +#: contrib/comments/views/karma.py:25 +msgid "No voting for yourself" +msgstr "자신이 직접 투표할 수 없습니다." + +#: contrib/comments/views/comments.py:27 +msgid "" +"This rating is required because you've entered at least one other rating." +msgstr "다른 레이팅을 입력했을 경우, 이 레이팅은 필히 입력하셔야 합니다." + +#: contrib/comments/views/comments.py:111 +#, python-format +msgid "" +"This comment was posted by a user who has posted fewer than %(count)s " +"comment:\n" +"\n" +"%(text)s" +msgid_plural "" +"This comment was posted by a user who has posted fewer than %(count)s " +"comments:\n" +"\n" +"%(text)s" +msgstr[0] "" +"이 코멘트를 작성한 사용자의 코멘트 포스팅은 %(count)s 번 이하입니다.:\n" +"\n" +"%(text)s" +msgstr[1] "" +"이 코멘트를 작성한 사용자의 코멘트 포스팅은 %(count)s 번 이하입니다.:\n" +"\n" +"%(text)s" + +#: contrib/comments/views/comments.py:116 +#, python-format +msgid "" +"This comment was posted by a sketchy user:\n" +"\n" +"%(text)s" +msgstr "" +"이 코멘트는 알수 없는 사용자가 작성했습니다.:\n" +"\n" +"%(text)s" + +#: contrib/comments/views/comments.py:188 +#: contrib/comments/views/comments.py:280 +msgid "Only POSTs are allowed" +msgstr "POST만 가능합니다." + +#: contrib/comments/views/comments.py:192 +#: contrib/comments/views/comments.py:284 +msgid "One or more of the required fields wasn't submitted" +msgstr "하나 이상의 필수항목이 누락되었습니다." + +#: contrib/comments/views/comments.py:196 +#: contrib/comments/views/comments.py:286 +msgid "Somebody tampered with the comment form (security violation)" +msgstr "해당 코멘트가 누군가에 의해 변경되었습니다." + +#: contrib/comments/views/comments.py:206 +#: contrib/comments/views/comments.py:292 +msgid "" +"The comment form had an invalid 'target' parameter -- the object ID was " +"invalid" +msgstr "" +"'target' 파라미터가 코멘트 폼에 적합하지 않습니다.오브젝트 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 "해당 코멘트 폼은 '미리보기'와 'post' 기능을 제공하지 않습니다." + +#: contrib/comments/templates/comments/freeform.html:4 +msgid "Your name:" +msgstr "이름:" + +#: contrib/comments/templates/comments/freeform.html:5 +#: contrib/comments/templates/comments/form.html:28 +msgid "Comment:" +msgstr "코멘트:" + +#: contrib/comments/templates/comments/freeform.html:10 +#: contrib/comments/templates/comments/form.html:35 +msgid "Preview comment" +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/change_form.html:10 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/model_index.html:5 +msgid "Log out" +msgstr "로그아웃" + +#: 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/flatpages/models.py:7 contrib/admin/views/doc.py:315 +msgid "URL" +msgstr "URL" + +#: contrib/flatpages/models.py:8 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "앞, 뒤에 슬래시(/)를 넣으세요. 예:'/about/contact/' " + +#: contrib/flatpages/models.py:9 +msgid "title" +msgstr "제목" + +#: contrib/flatpages/models.py:10 +msgid "content" +msgstr "내용" + +#: contrib/flatpages/models.py:11 +msgid "enable comments" +msgstr "사용 가능한 코멘트" + +#: contrib/flatpages/models.py:12 +msgid "template name" +msgstr "템플릿명" + +#: contrib/flatpages/models.py:13 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" +"예: 'flatpages/contact_page.html' 를 사용할 수 없는 경우 시스템이 'flatpages/" +"default.html' (을)를 사용합니다." + +#: contrib/flatpages/models.py:14 +msgid "registration required" +msgstr "등록하세요." + +#: contrib/flatpages/models.py:14 +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/sessions/models.py:68 +msgid "session key" +msgstr "세션 키" + +#: contrib/sessions/models.py:69 +msgid "session data" +msgstr "세션 날짜" + +#: contrib/sessions/models.py:70 +msgid "expire date" +msgstr "유효날짜" + +#: contrib/sessions/models.py:74 +msgid "session" +msgstr "세션" + +#: contrib/sessions/models.py:75 +msgid "sessions" +msgstr "세션" + +#: contrib/sites/models.py:10 +msgid "domain name" +msgstr "도메인 명" + +#: contrib/sites/models.py:11 +msgid "display name" +msgstr "표시명" + +#: contrib/sites/models.py:15 +msgid "site" +msgstr "사이트" + +#: contrib/sites/models.py:16 +msgid "sites" +msgstr "사이트(들)" + +#: contrib/admin/filterspecs.py:40 +#, python-format +msgid "" +"

                By %s:

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

                  %s(으)로:

                  \n" +"
                    \n" + +#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88 +#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169 +msgid "All" +msgstr "모두" + +#: contrib/admin/filterspecs.py:109 +msgid "Any date" +msgstr "언제나" + +#: contrib/admin/filterspecs.py:110 +msgid "Today" +msgstr "오늘" + +#: contrib/admin/filterspecs.py:113 +msgid "Past 7 days" +msgstr "지난 7일" + +#: contrib/admin/filterspecs.py:115 +msgid "This month" +msgstr "이번 달" + +#: contrib/admin/filterspecs.py:117 +msgid "This year" +msgstr "이번 해" + +#: contrib/admin/models.py:16 +msgid "action time" +msgstr "액션 타임" + +#: contrib/admin/models.py:19 +msgid "object id" +msgstr "오브젝트 아이디" + +#: 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:247 +msgid "All dates" +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/auth.py:19 contrib/admin/views/main.py:257 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "%(name)s \"%(obj)s\" (이)가 추가되었습니다." + +#: contrib/admin/views/auth.py:24 contrib/admin/views/main.py:261 +#: contrib/admin/views/main.py:347 +msgid "You may edit it again below." +msgstr "계속해서 편집하실 수 있습니다." + +#: contrib/admin/views/auth.py:30 +msgid "Add user" +msgstr "사용자 추가" + +#: contrib/admin/views/auth.py:57 +msgid "Password changed successfully." +msgstr "비밀번호가 변경되었습니다." + +#: contrib/admin/views/auth.py:64 +#, python-format +msgid "Change password: %s" +msgstr "비밀번호 변경: %s" + +#: contrib/admin/views/main.py:223 +msgid "Site administration" +msgstr "사이트 관리" + +#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356 +#, python-format +msgid "You may add another %s below." +msgstr "계속해서 다른 %s (을)를 추가하세요." + +#: contrib/admin/views/main.py:289 +#, python-format +msgid "Add %s" +msgstr "%s 추가" + +#: contrib/admin/views/main.py:335 +#, python-format +msgid "Added %s." +msgstr "%s (이)가 추가되었습니다." + +#: contrib/admin/views/main.py:337 +#, python-format +msgid "Changed %s." +msgstr "%s (이)가 변경되었습니다." + +#: contrib/admin/views/main.py:339 +#, python-format +msgid "Deleted %s." +msgstr "%s (이)가 삭제되었습니다." + +#: contrib/admin/views/main.py:342 +msgid "No fields changed." +msgstr "변경된 필드가 없습니다." + +#: contrib/admin/views/main.py:345 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" (이)가 변경되었습니다." + +#: contrib/admin/views/main.py:353 +#, python-format +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "%(name)s \"%(obj)s\" (이)가 추가되었습니다. 계속해서 편집하세요." + +#: contrib/admin/views/main.py:391 +#, python-format +msgid "Change %s" +msgstr "%s 변경" + +#: contrib/admin/views/main.py:476 +#, python-format +msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +msgstr "%(name)s 에 %(fieldname)s (이)가 하나 이상 있는 %(obj)s" + +#: contrib/admin/views/main.py:481 +#, python-format +msgid "One or more %(fieldname)s in %(name)s:" +msgstr "%(name)s 에 %(fieldname)s (이)가 하나 이상 있는" + +#: contrib/admin/views/main.py:514 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "%(name)s \"%(obj)s\" (이)가 삭제되었습니다." + +#: contrib/admin/views/main.py:517 +msgid "Are you sure?" +msgstr "확실합니까?" + +#: contrib/admin/views/main.py:539 +#, python-format +msgid "Change history: %s" +msgstr "변경 히스토리: %s" + +#: contrib/admin/views/main.py:573 +#, python-format +msgid "Select %s" +msgstr "%s 선택" + +#: contrib/admin/views/main.py:573 +#, python-format +msgid "Select %s to change" +msgstr "변경할 %s 선택" + +#: contrib/admin/views/main.py:768 +msgid "Database error" +msgstr "데이터베이스 오류" + +#: contrib/admin/views/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 %(name)r not found in app %(label)r" +msgstr "모델 %(name)r (이)가 어플리케이션 %(label)r 에 없습니다." + +#: contrib/admin/views/doc.py:183 +#, python-format +msgid "the related `%(label)s.%(type)s` object" +msgstr "`%(label)s.%(type)s` 관련 오브젝트" + +#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205 +#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224 +msgid "model:" +msgstr "모델:" + +#: contrib/admin/views/doc.py:214 +#, python-format +msgid "related `%(label)s.%(name)s` objects" +msgstr "`%(label)s.%(name)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:292 +msgid "Boolean (Either True or False)" +msgstr "boolean(참 또는 거짓)" + +#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311 +#, python-format +msgid "String (up to %(maxlength)s)" +msgstr "문자열(%(maxlength)s 까지)" + +#: contrib/admin/views/doc.py:294 +msgid "Comma-separated integers" +msgstr "정수(콤마로 구분)" + +#: contrib/admin/views/doc.py:295 +msgid "Date (without time)" +msgstr "날짜(시간 제외)" + +#: contrib/admin/views/doc.py:296 +msgid "Date (with time)" +msgstr "날짜(시간 포함)" + +#: contrib/admin/views/doc.py:297 +msgid "E-mail address" +msgstr "이메일 주소" + +#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299 +#: contrib/admin/views/doc.py:302 +msgid "File path" +msgstr "파일 경로" + +#: contrib/admin/views/doc.py:300 +msgid "Decimal number" +msgstr "10진수" + +#: contrib/admin/views/doc.py:306 +msgid "Boolean (Either True, False or None)" +msgstr "boolean (참, 거짓 또는 none)" + +#: contrib/admin/views/doc.py:307 +msgid "Relation to parent model" +msgstr "부모(상위) 모델과 연계" + +#: contrib/admin/views/doc.py:308 +msgid "Phone number" +msgstr "전화번호" + +#: contrib/admin/views/doc.py:313 +msgid "Text" +msgstr "텍스트" + +#: contrib/admin/views/doc.py:314 +msgid "Time" +msgstr "시각" + +#: contrib/admin/views/doc.py:316 +msgid "U.S. state (two uppercase letters)" +msgstr "미국의 주 (두개의 대문자로)" + +#: contrib/admin/views/doc.py:317 +msgid "XML text" +msgstr "XML 텍스트" + +#: contrib/admin/views/doc.py:343 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "%s (은)는 url 패턴의 오브젝트가 아닙니다." + +#: contrib/admin/templates/widget/file.html:2 +msgid "Currently:" +msgstr "현재:" + +#: contrib/admin/templates/widget/file.html:3 +msgid "Change:" +msgstr "변경:" + +#: contrib/admin/templates/widget/date_time.html:3 +msgid "Date:" +msgstr "날짜:" + +#: contrib/admin/templates/widget/date_time.html:4 +msgid "Time:" +msgstr "시각:" + +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Documentation" +msgstr "문서" + +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:46 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/model_index.html:5 +msgid "Change password" +msgstr "비밀번호 변경" + +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/change_list.html:6 +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/admin/change_form.html:13 +#: contrib/admin/templates/admin/base.html:30 +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/auth/user/change_password.html:12 +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/logged_out.html:4 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Home" +msgstr "홈" + +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/change_form.html:21 +msgid "History" +msgstr "히스토리" + +#: contrib/admin/templates/admin/object_history.html:18 +msgid "Date/time" +msgstr "날짜/시간" + +#: contrib/admin/templates/admin/object_history.html:19 +msgid "User" +msgstr "사용자" + +#: contrib/admin/templates/admin/object_history.html:20 +msgid "Action" +msgstr "액션" + +#: contrib/admin/templates/admin/object_history.html:26 +msgid "DATE_WITH_TIME_FULL" +msgstr "년/월/일 시:분:초" + +#: contrib/admin/templates/admin/object_history.html:36 +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "" +"오브젝트에 변경사항이 없습니다.이 admin 사이트를 통해 추가된 사항이 아닙니다." + +#: contrib/admin/templates/admin/change_list.html:12 +#, python-format +msgid "Add %(name)s" +msgstr "%(name)s 추가" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr "%(filter_title)s (으)로" + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "서버 오류" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "서버 오류 (500)" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "서버 오류 (500)" + +#: contrib/admin/templates/admin/500.html:10 +msgid "" +"There's been an error. It's been reported to the site administrators via e-" +"mail and should be fixed shortly. Thanks for your patience." +msgstr "" +"오류가 발생했습니다. 사이트 관리자에게 이메일로 에러를 보고 했습니다.조속히 " +"수정하도록 하겠습니다. 고맙습니다." + +#: contrib/admin/templates/admin/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 "실행" + +#: 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/base_site.html:4 +msgid "Django site admin" +msgstr "Django 사이트 관리" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "Django 관리" + +#: contrib/admin/templates/admin/filters.html:4 +msgid "Filter" +msgstr "필터" + +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "해당 페이지가 없습니다." + +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "죄송합니다, 요청하신 페이지를 찾을 수 없습니다." + +#: contrib/admin/templates/admin/index.html:17 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "%(name)s 어플리케이션으로 이용 가능한 모델" + +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "%(name)s" +msgstr "%(name)s" + +#: contrib/admin/templates/admin/index.html:28 +#: contrib/admin/templates/admin/change_form.html:15 +msgid "Add" +msgstr "추가" + +#: contrib/admin/templates/admin/index.html:34 +msgid "Change" +msgstr "변경" + +#: contrib/admin/templates/admin/index.html:44 +msgid "You don't have permission to edit anything." +msgstr "수정할 권한이 없습니다." + +#: contrib/admin/templates/admin/index.html:52 +msgid "Recent Actions" +msgstr "최근 액션" + +#: contrib/admin/templates/admin/index.html:53 +msgid "My Actions" +msgstr "나의 액션" + +#: contrib/admin/templates/admin/index.html:57 +msgid "None available" +msgstr "이용할 수 없습니다." + +#: contrib/admin/templates/admin/change_form.html:22 +msgid "View on site" +msgstr "사이트에서 보기" + +#: contrib/admin/templates/admin/change_form.html:32 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "아래의 오류를 수정해 주세요." +msgstr[1] "아래의 오류들을 수정해 주세요." + +#: contrib/admin/templates/admin/change_form.html:50 +msgid "Ordering" +msgstr "순서" + +#: contrib/admin/templates/admin/change_form.html:53 +msgid "Order:" +msgstr "순서:" + +#: contrib/admin/templates/admin/base.html:25 +msgid "Welcome," +msgstr "환영합니다," + +#: contrib/admin/templates/admin/delete_confirmation.html:9 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Delete" +msgstr "삭제" + +#: contrib/admin/templates/admin/delete_confirmation.html:14 +#, python-format +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" +msgstr "" +"%(object_name)s \"%(escaped_object)s\" (을)를 삭제하면서관련 오브젝트를 제거" +"하고자 했으나, 지금 사용하시는 계정은 다음 타입의 오브젝트를 제거할 권한이 없" +"습니다. :" + +#: contrib/admin/templates/admin/delete_confirmation.html:21 +#, python-format +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" +msgstr "" +"정말로 %(object_name)s \"%(escaped_object)s\" (을)를 삭제하시겠습니까?다음의 " +"관련 아이템들이 모두 삭제됩니다. :" + +#: contrib/admin/templates/admin/delete_confirmation.html:26 +msgid "Yes, I'm sure" +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/auth/user/change_password.html:28 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "%(username)s 새로운 비밀번호를 입력하세요." + +#: contrib/admin/templates/admin/auth/user/change_password.html:34 +#: contrib/admin/templates/admin/auth/user/add_form.html:18 +msgid "Password" +msgstr "비밀번호" + +#: contrib/admin/templates/admin/auth/user/change_password.html:39 +#: contrib/admin/templates/admin/auth/user/add_form.html:23 +msgid "Password (again)" +msgstr "비밀번호 (확인)" + +#: contrib/admin/templates/admin/auth/user/change_password.html:40 +#: contrib/admin/templates/admin/auth/user/add_form.html:24 +msgid "Enter the same password as above, for verification." +msgstr "확인을 위해 위와 동일한 비밀번호를 입력하세요. " + +#: contrib/admin/templates/admin/auth/user/add_form.html:6 +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "" +"사용자명와 비밀번호를 입력하세요.더 많은 사용자 옵션을 사용하실 수 있습니다." + +#: contrib/admin/templates/admin/auth/user/add_form.html:12 +msgid "Username" +msgstr "사용자명" + +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/registration/password_change_form.html:6 +#: contrib/admin/templates/registration/password_change_form.html:10 +msgid "Password change" +msgstr "비밀번호 변경" + +#: contrib/admin/templates/registration/password_change_done.html:6 +#: contrib/admin/templates/registration/password_change_done.html:10 +msgid "Password change successful" +msgstr "비밀번호를 변경하였습니다." + +#: contrib/admin/templates/registration/password_change_done.html:12 +msgid "Your password was changed." +msgstr "비밀번호가 변경되었습니다." + +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:6 +#: contrib/admin/templates/registration/password_reset_form.html:10 +#: contrib/admin/templates/registration/password_reset_done.html:4 +msgid "Password reset" +msgstr "비밀번호 초기화" + +#: contrib/admin/templates/registration/password_reset_form.html:12 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll reset " +"your password and e-mail the new one to you." +msgstr "" +"비밀번호를 잊으셨나요? 아래에 비밀번호를 입력하시면비밀전호를 초기화 한 후, " +"새로운 비밀번호를 보내드리겠습니다." + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "이메일 주소:" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "비밀번호 초기화" + +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "사이트를 이용해 주셔서 고맙습니다." + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "다시 로그인하기" + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "비밀번호가 초기화 되었습니다." + +#: contrib/admin/templates/registration/password_reset_done.html:12 +msgid "" +"We've e-mailed a new password to the e-mail address you submitted. You " +"should be receiving it shortly." +msgstr "새로운 비밀번호를 등록하신 이메일로 보내드렸습니다." + +#: contrib/admin/templates/registration/password_change_form.html:12 +msgid "" +"Please enter your old password, for security's sake, and then enter your new " +"password twice so we can verify you typed it in correctly." +msgstr "" +"보안상 필요하오니 기존에 사용하시던 비밀번호를 입력해 주세요.새로운 비밀번호" +"는 정확히 입력했는지 확인할 수 있도록 두 번 입력하시기 바랍니다." + +#: contrib/admin/templates/registration/password_change_form.html:17 +msgid "Old password:" +msgstr "기존 비밀번호:" + +#: contrib/admin/templates/registration/password_change_form.html:19 +msgid "New password:" +msgstr "새로운 비밀번호:" + +#: contrib/admin/templates/registration/password_change_form.html:21 +msgid "Confirm password:" +msgstr "새로운 비밀번호(확인):" + +#: contrib/admin/templates/registration/password_change_form.html:23 +msgid "Change my password" +msgstr "비밀번호 변경" + +#: contrib/admin/templates/registration/password_reset_email.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "비밀번호가 초기화 되었음을 알려드립니다." + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "%(site_name)s 의 사용자 비밀번호가 초기화 되었습니다." + +#: contrib/admin/templates/registration/password_reset_email.html:5 +#, python-format +msgid "Your new password is: %(new_password)s" +msgstr "새로운 비밀번호는 %(new_password)s 입니다." + +#: contrib/admin/templates/registration/password_reset_email.html:7 +msgid "Feel free to change this password by going to this page:" +msgstr "해당 페이지에서 언제든지 비밀번호 변경이 가능합니다." + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Your username, in case you've forgotten:" +msgstr "사용자명:" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +msgid "Thanks for using our site!" +msgstr "사이트를 이용해 주셔서 고맙습니다." + +#: contrib/admin/templates/registration/password_reset_email.html:15 +#, python-format +msgid "The %(site_name)s team" +msgstr "%(site_name)s 팀" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Bookmarklets" +msgstr "북마크릿" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:5 +msgid "Documentation bookmarklets" +msgstr "문서 북마크릿" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:9 +msgid "" +"\n" +"

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

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

                    북마크릿을 설치하시려면 링크를 북마크 툴바로 드래그 하거" +"나,\n" +"오른쪽 클릭으로 해당 링크를 북마크에 추가하세요.\n" +"이제 사이트 내의 모든 페이지에서 북마크릿 선택이 가능합니다.\n" +"북마크릿에 따라 내부 네트워크 상의 컴퓨터로부터 이 사이트를 참조해야하는 경우" +"가 있습니다.\n" +"(내부 네트워크가 있는지 불명확한 경우 시스템 관리자에게 확인하시기 바랍니다.)" +"

                    \n" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:19 +msgid "Documentation for this page" +msgstr "이 페이지의 문서" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:20 +msgid "" +"Jumps you from any page to the documentation for the view that generates " +"that page." +msgstr "각 페이지로에서 해당 페이지를 생성한 뷰의 문서로 갑니다." + +#: 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/localflavor/au/forms.py:18 +#, +msgid "Enter a 4 digit post code." +msgstr "우편번호를 입력하세요. (xxxx)" + +#: contrib/localflavor/uk/forms.py:18 +msgid "Enter a postcode. A space is required between the two postcode parts." +msgstr "우편번호를 입력하세요. (xxx xxx)" + +#: contrib/localflavor/fr/forms.py:17 contrib/localflavor/fi/forms.py:14 +#: contrib/localflavor/de/forms.py:16 +msgid "Enter a zip code in the format XXXXX." +msgstr "우편번호를 입력하세요.(xxx xxx)" + +#: contrib/localflavor/jp/forms.py:21 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "우변번호를 입력하세요.(xxxxxx 또는 xxx-xxx)" + +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:6 +msgid "Iwate" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:16 +msgid "Tokyo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +msgid "Shimane" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +msgid "Kagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +msgid "Ehime" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" +msgstr "" + +#: contrib/localflavor/it/forms.py:16 +#, +msgid "Enter a valid zip code." +msgstr "올바른 우편번호를 입력하세요." + +#: contrib/localflavor/it/forms.py:41 +#, +msgid "Enter a valid Social Security number." +msgstr "올바른 Social Security number를 입력하세요." + +#: contrib/localflavor/it/forms.py:68 +#, +msgid "Enter a valid VAT number." +msgstr "올바른 VAT번호를 입력하세요." + +#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45 +#, +msgid "Enter a valid Finnish social security number." +msgstr "올바른 핀란드 Social Security number를 입력하세요." + +#: contrib/localflavor/br/forms.py:18 +#, +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "우편번호는 XXXXX-XXX 형식으로 입력하세요." + +#: contrib/localflavor/br/forms.py:30 +#, fuzzy +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "" +"전화번호는 xx-xxxx-xxxx 형식으로 입력하세요." + +#: contrib/localflavor/no/forms.py:15 +#, fuzzy +msgid "Enter a zip code in the format XXXX." +msgstr "우편번호를 입력하세요.(xxx xxx)" + +#: contrib/localflavor/no/forms.py:36 +#, fuzzy +msgid "Enter a valid Norwegian social security number." +msgstr "10진수를 사용해 주세요." + +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "" + +#: contrib/localflavor/de/de_states.py:7 +#, fuzzy +msgid "Berlin" +msgstr "브라질어" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:11 +#, fuzzy +msgid "Hessen" +msgstr "메시지" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "" + +#: contrib/localflavor/de/de_states.py:16 +#, fuzzy +msgid "Saarland" +msgstr "카탈로니아어" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "" + +#: contrib/localflavor/de/forms.py:60 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "" + +#: contrib/localflavor/us/forms.py:18 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "우변번호를 입력하세요.(xxxxxx 또는 xxx-xxx)" + +#: contrib/localflavor/us/forms.py:51 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "" + +#: template/defaultfilters.py:491 +msgid "yes,no,maybe" +msgstr "예, 아니오, 아마도" + +#: template/defaultfilters.py:520 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "" +msgstr[1] "" + +#: template/defaultfilters.py:522 +#, python-format +msgid "%.1f KB" +msgstr "" + +#: template/defaultfilters.py:524 +#, python-format +msgid "%.1f MB" +msgstr "" + +#: template/defaultfilters.py:525 +#, python-format +msgid "%.1f GB" +msgstr "" + +#: oldforms/__init__.py:392 +#, python-format +msgid "Ensure your text is less than %s character." +msgid_plural "Ensure your text is less than %s characters." +msgstr[0] "%s 자 이하로 입력해 주세요." +msgstr[1] "%s 자 이하로 입력해 주세요." + +#: oldforms/__init__.py:397 +msgid "Line breaks are not allowed here." +msgstr "줄바꿈이 허용되지 않습니다." + +#: oldforms/__init__.py:498 oldforms/__init__.py:571 oldforms/__init__.py:610 +#, python-format +msgid "Select a valid choice; '%(data)s' is not in %(choices)s." +msgstr "올바르게 선택해 주세요. '%(data)s' (이)가 %(choices)s 에 없습니다." + +#: oldforms/__init__.py:674 +msgid "The submitted file is empty." +msgstr "입력하신 파일은 빈 파일입니다." + +#: oldforms/__init__.py:730 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "-32,768 ~ 32,767 사이의 정수를 입력하세요." + +#: oldforms/__init__.py:740 +msgid "Enter a positive number." +msgstr "양수를 입력하세요." + +#: oldforms/__init__.py:750 +msgid "Enter a whole number between 0 and 32,767." +msgstr "0 ~ 32,767 사이의 정수를 입력하세요." diff --git a/django/conf/locale/ko/LC_MESSAGES/djangojs.mo b/django/conf/locale/ko/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000..7b70530c1a Binary files /dev/null and b/django/conf/locale/ko/LC_MESSAGES/djangojs.mo differ diff --git a/django/conf/locale/ko/LC_MESSAGES/djangojs.po b/django/conf/locale/ko/LC_MESSAGES/djangojs.po new file mode 100644 index 0000000000..d76174c3a3 --- /dev/null +++ b/django/conf/locale/ko/LC_MESSAGES/djangojs.po @@ -0,0 +1,118 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-04-06 11:10+0900\n" +"PO-Revision-Date: 2007-04-06 11:15+0900\n" +"Last-Translator: Hyun Mi Ae \n" +"Language-Team: Korean\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: contrib/admin/media/js/calendar.js:24 +#: contrib/admin/media/js/dateparse.js:32 +msgid "" +"January February March April May June July August September October November " +"December" +msgstr "1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월" + +#: contrib/admin/media/js/calendar.js:25 +msgid "S M T W T F S" +msgstr "일 월 화 수 목 금 토" + +#: contrib/admin/media/js/dateparse.js:33 +msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" +msgstr "일요일 월요일 화요일 수요일 목요일 금요일 토요일" + +#: 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/admin/CollapsedFieldsets.js:34 +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72 +msgid "Show" +msgstr "보기" + +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63 +msgid "Hide" +msgstr "감추기" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 +msgid "Now" +msgstr "현재" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51 +msgid "Clock" +msgstr "시계" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78 +msgid "Choose a time" +msgstr "시간 선택" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 +msgid "Midnight" +msgstr "자정" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 +msgid "6 a.m." +msgstr "오전 6시" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 +msgid "Noon" +msgstr "정오" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183 +msgid "Cancel" +msgstr "취소" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177 +msgid "Today" +msgstr "오늘" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132 +msgid "Calendar" +msgstr "달력" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175 +msgid "Yesterday" +msgstr "어제" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179 +msgid "Tomorrow" +msgstr "내일" diff --git a/django/conf/locale/lv/LC_MESSAGES/django.mo b/django/conf/locale/lv/LC_MESSAGES/django.mo index 21f9e8aecb..e3cd24cfb7 100644 Binary files a/django/conf/locale/lv/LC_MESSAGES/django.mo and b/django/conf/locale/lv/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/lv/LC_MESSAGES/django.po b/django/conf/locale/lv/LC_MESSAGES/django.po index 72e2316fcb..bf73a61615 100644 --- a/django/conf/locale/lv/LC_MESSAGES/django.po +++ b/django/conf/locale/lv/LC_MESSAGES/django.po @@ -8,24 +8,132 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-02-15 10:47+1100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2007-05-07 23:28+0300\n" +"PO-Revision-Date: 2007-05-08 00:35+0300\n" +"Last-Translator: Gatis Tomsons \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -#: db/models/manipulators.py:305 +#: oldforms/__init__.py:357 +#: db/models/fields/__init__.py:117 +#: db/models/fields/__init__.py:274 +#: db/models/fields/__init__.py:612 +#: db/models/fields/__init__.py:623 +#: newforms/models.py:178 +#: newforms/fields.py:80 +#: newforms/fields.py:376 +#: newforms/fields.py:452 +#: newforms/fields.py:463 +msgid "This field is required." +msgstr "Šis lauks ir obligāts." + +#: 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] "" +msgstr[1] "" + +#: oldforms/__init__.py:397 +msgid "Line breaks are not allowed here." +msgstr "Pārnešana jaunā rindā šeit nav atļauta." + +#: 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 "" + +#: oldforms/__init__.py:577 +#: newforms/widgets.py:180 +#: contrib/admin/filterspecs.py:150 +msgid "Unknown" +msgstr "Nezināms" + +#: oldforms/__init__.py:577 +#: newforms/widgets.py:180 +#: contrib/admin/filterspecs.py:143 +msgid "Yes" +msgstr "Jā" + +#: oldforms/__init__.py:577 +#: newforms/widgets.py:180 +#: contrib/admin/filterspecs.py:143 +msgid "No" +msgstr "Nē" + +#: 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 "Jūsu norādītais fails ir tukšs." + +#: oldforms/__init__.py:730 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "Ievadiet veselu skaitli intervālā no -32,768 līdz 32,767." + +#: oldforms/__init__.py:740 +msgid "Enter a positive number." +msgstr "Ievadiet pozitīvu skaitli." + +#: oldforms/__init__.py:750 +msgid "Enter a whole number between 0 and 32,767." +msgstr "Ievadiet veselu skaitli intervāla starp 0 un 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:306 contrib/admin/views/main.py:335 -#: contrib/admin/views/main.py:337 contrib/admin/views/main.py:339 +#: 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 "un" +#: db/models/fields/__init__.py:42 +#, python-format +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "" + +#: db/models/fields/__init__.py:369 +msgid "This value must be an integer." +msgstr "Vērtībai ir jābūt veselam skaitlim." + +#: db/models/fields/__init__.py:404 +msgid "This value must be either True or False." +msgstr "Vērtībai jābūt True vai False." + +#: db/models/fields/__init__.py:425 +msgid "This field cannot be null." +msgstr "Šis lauks nevar būt null" + +#: db/models/fields/__init__.py:459 +#: core/validators.py:148 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Ievadiet korektu datumu YYYY-MM-DD formātā." + +#: db/models/fields/__init__.py:528 +#: core/validators.py:157 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "Ievadiet korektu datumu/laiku YYYY-MM-DD HH:MM formātā." + +#: db/models/fields/__init__.py:632 +msgid "Enter a valid filename." +msgstr "Ievadiet korektu faila vārdu." + +#: db/models/fields/__init__.py:753 +msgid "This value must be either None, True or False." +msgstr "Šai vērtībai jābūt None, True vai False." + #: db/models/fields/related.py:53 #, python-format msgid "Please enter a valid %s." @@ -36,682 +144,606 @@ msgid "Separate multiple IDs with commas." msgstr "Atdaliet vairākus ID ar komatiem." #: db/models/fields/related.py:644 -msgid "" -"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" #: 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." +msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid." msgstr[0] "" msgstr[1] "" -#: db/models/fields/__init__.py:42 -#, python-format -msgid "%(optname)s with this %(fieldname)s already exists." -msgstr "" - -#: db/models/fields/__init__.py:116 db/models/fields/__init__.py:273 -#: db/models/fields/__init__.py:605 db/models/fields/__init__.py:616 -#: oldforms/__init__.py:352 newforms/fields.py:78 newforms/fields.py:373 -#: newforms/fields.py:449 newforms/fields.py:460 -msgid "This field is required." -msgstr "Šis lauks ir obligāts." - -#: db/models/fields/__init__.py:366 -msgid "This value must be an integer." -msgstr "Vērtībai ir jābūt veselam skaitlim." - -#: db/models/fields/__init__.py:401 -msgid "This value must be either True or False." -msgstr "Vērtībai jābūt True vai False." - -#: db/models/fields/__init__.py:422 -msgid "This field cannot be null." -msgstr "Šis lauks nevar būt null" - -#: db/models/fields/__init__.py:454 core/validators.py:147 -msgid "Enter a valid date in YYYY-MM-DD format." -msgstr "Ievadiet korektu datumu YYYY-MM-DD formātā." - -#: db/models/fields/__init__.py:521 core/validators.py:156 -msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." -msgstr "Ievadiet korektu datumu/laiku YYYY-MM-DD HH:MM formātā." - -#: db/models/fields/__init__.py:625 -msgid "Enter a valid filename." -msgstr "Ievadiet korektu faila vārdu." - #: conf/global_settings.py:39 msgid "Arabic" -msgstr "" +msgstr "Arābu" #: conf/global_settings.py:40 msgid "Bengali" -msgstr "" +msgstr "Bengāļu" #: conf/global_settings.py:41 -msgid "Czech" +msgid "Catalan" msgstr "" #: conf/global_settings.py:42 -msgid "Welsh" -msgstr "" +msgid "Czech" +msgstr "Čehu" #: conf/global_settings.py:43 -msgid "Danish" -msgstr "" +msgid "Welsh" +msgstr "Velsas" #: conf/global_settings.py:44 -msgid "German" -msgstr "" +msgid "Danish" +msgstr "Dāņu" #: conf/global_settings.py:45 -msgid "Greek" -msgstr "" +msgid "German" +msgstr "Vācu" #: conf/global_settings.py:46 -msgid "English" -msgstr "" +msgid "Greek" +msgstr "Grieķu" #: conf/global_settings.py:47 -msgid "Spanish" -msgstr "" +msgid "English" +msgstr "Angļu" #: conf/global_settings.py:48 -msgid "Argentinean Spanish" -msgstr "" +msgid "Spanish" +msgstr "Spaņu" #: conf/global_settings.py:49 -msgid "Finnish" -msgstr "" +msgid "Argentinean Spanish" +msgstr "Argentīniešu Spāņu" #: conf/global_settings.py:50 -msgid "French" -msgstr "" +msgid "Finnish" +msgstr "Somu" #: conf/global_settings.py:51 -msgid "Galician" -msgstr "" +msgid "French" +msgstr "Franču" #: conf/global_settings.py:52 -msgid "Hungarian" -msgstr "" +msgid "Galician" +msgstr "Galīciešu" #: conf/global_settings.py:53 +msgid "Hungarian" +msgstr "Ungāru" + +#: conf/global_settings.py:54 msgid "Hebrew" msgstr "" -#: conf/global_settings.py:54 -msgid "Icelandic" -msgstr "" - #: conf/global_settings.py:55 -msgid "Italian" -msgstr "" +msgid "Icelandic" +msgstr "Islandiešu" #: conf/global_settings.py:56 -msgid "Japanese" -msgstr "" +msgid "Italian" +msgstr "Itāļu" #: conf/global_settings.py:57 -msgid "Dutch" -msgstr "" +msgid "Japanese" +msgstr "Japāņu" #: conf/global_settings.py:58 -msgid "Norwegian" -msgstr "" +msgid "Korean" +msgstr "Koreiešu" #: conf/global_settings.py:59 -msgid "Polish" -msgstr "" +msgid "Kannada" +msgstr "Kanāda" #: conf/global_settings.py:60 -msgid "Brazilian" -msgstr "" +msgid "Latvian" +msgstr "Latviešu" #: conf/global_settings.py:61 -msgid "Romanian" -msgstr "" +msgid "Macedonian" +msgstr "Maķedoniešu" #: conf/global_settings.py:62 -msgid "Russian" -msgstr "" +msgid "Dutch" +msgstr "Dāņu" #: conf/global_settings.py:63 -msgid "Slovak" -msgstr "" +msgid "Norwegian" +msgstr "Norvēģu" #: conf/global_settings.py:64 -msgid "Slovenian" -msgstr "" +msgid "Polish" +msgstr "Poļu" #: conf/global_settings.py:65 -msgid "Serbian" -msgstr "" +msgid "Portugese" +msgstr "Portugāļu" #: conf/global_settings.py:66 -msgid "Swedish" -msgstr "" +msgid "Brazilian" +msgstr "Brazīliešu" #: conf/global_settings.py:67 -msgid "Tamil" -msgstr "" +msgid "Romanian" +msgstr "Rumāņu" #: conf/global_settings.py:68 -msgid "Turkish" -msgstr "" +msgid "Russian" +msgstr "Krievu" #: conf/global_settings.py:69 -msgid "Ukrainian" -msgstr "" +msgid "Slovak" +msgstr "Slovāku" #: conf/global_settings.py:70 -msgid "Simplified Chinese" -msgstr "" +msgid "Slovenian" +msgstr "Slovēņu" #: conf/global_settings.py:71 +msgid "Serbian" +msgstr "Serbu" + +#: conf/global_settings.py:72 +msgid "Swedish" +msgstr "Zviedru" + +#: conf/global_settings.py:73 +msgid "Tamil" +msgstr "Tamiliešu" + +#: conf/global_settings.py:74 +msgid "Telugu" +msgstr "Telugu" + +#: conf/global_settings.py:75 +msgid "Turkish" +msgstr "Turku" + +#: conf/global_settings.py:76 +msgid "Ukrainian" +msgstr "Ukraiņu" + +#: conf/global_settings.py:77 +msgid "Simplified Chinese" +msgstr "Vienkāršā ķīniešu" + +#: conf/global_settings.py:78 msgid "Traditional Chinese" -msgstr "" +msgstr "Tradicionālā ķīniešu" -#: utils/timesince.py:12 -msgid "year" -msgid_plural "years" -msgstr[0] "gads" -msgstr[1] "gadi" +#: core/validators.py:64 +msgid "This value must contain only letters, numbers and underscores." +msgstr "Šī vērtība var saturēt tikai burtus, numurus un apakšsvītras." -#: utils/timesince.py:13 -msgid "month" -msgid_plural "months" -msgstr[0] "mēnesis" -msgstr[1] "mēneši" +#: core/validators.py:68 +msgid "This value must contain only letters, numbers, underscores, dashes or slashes." +msgstr "Šī vērtība var saturēt tikai burtus, numurus un apakšsvītras, svītras vai šķērssvītras." -#: utils/timesince.py:14 -msgid "week" -msgid_plural "weeks" -msgstr[0] "nedēļa" -msgstr[1] "nedēļas" +#: core/validators.py:72 +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "Šī vērtība var saturēt tikai burtus, numurus un apakšsvītras vai šķērssvītras." -#: utils/timesince.py:15 -msgid "day" -msgid_plural "days" -msgstr[0] "diena" -msgstr[1] "dienas" +#: core/validators.py:76 +msgid "Uppercase letters are not allowed here." +msgstr "Augšējā reģistra burti nav atļauti." -#: utils/timesince.py:16 -msgid "hour" -msgid_plural "hours" -msgstr[0] "stunda" -msgstr[1] "stundas" +#: core/validators.py:80 +msgid "Lowercase letters are not allowed here." +msgstr "Apakšējā reģistra burti nav atļauti." -#: utils/timesince.py:17 -msgid "minute" -msgid_plural "minutes" -msgstr[0] "minūte" -msgstr[1] "minūtes" +#: core/validators.py:87 +msgid "Enter only digits separated by commas." +msgstr "Ievadiet tikai numurus, kas atdalīti ar komatiem." -#: utils/dates.py:6 -msgid "Monday" -msgstr "Pirmdiena" +#: core/validators.py:99 +msgid "Enter valid e-mail addresses separated by commas." +msgstr "Ievadiet korektas e-pasta adreses, kas atdalītas ar komatiem." -#: utils/dates.py:6 -msgid "Tuesday" -msgstr "Otrdiena" +#: core/validators.py:103 +msgid "Please enter a valid IP address." +msgstr "Lūdzu ievadiet korektu IP adresi." -#: utils/dates.py:6 -msgid "Wednesday" -msgstr "Trešdiena" +#: core/validators.py:107 +msgid "Empty values are not allowed here." +msgstr "Tukšas vērtības nav atļautas." -#: utils/dates.py:6 -msgid "Thursday" -msgstr "Ceturdiena" +#: core/validators.py:111 +msgid "Non-numeric characters aren't allowed here." +msgstr "Ne ciparu simboli nav atļauti." -#: utils/dates.py:6 -msgid "Friday" -msgstr "Piektdiena" +#: core/validators.py:115 +msgid "This value can't be comprised solely of digits." +msgstr "Šī vērtība nevar saturēt tikai ciparus." -#: utils/dates.py:7 -msgid "Saturday" -msgstr "Sestdiena" +#: core/validators.py:120 +#: newforms/fields.py:128 +msgid "Enter a whole number." +msgstr "Ievadiet veselus skaitļus." -#: utils/dates.py:7 -msgid "Sunday" -msgstr "Svētdiena" +#: core/validators.py:124 +msgid "Only alphabetical characters are allowed here." +msgstr "Atļauti tikai alfabētiskie simboli." -#: utils/dates.py:14 -msgid "January" -msgstr "Janvāris" +#: core/validators.py:139 +msgid "Year must be 1900 or later." +msgstr "Gadam jabūt 1900 vai vēlākam." -#: utils/dates.py:14 -msgid "February" -msgstr "Februāris" - -#: utils/dates.py:14 utils/dates.py:27 -msgid "March" -msgstr "Marts" - -#: utils/dates.py:14 utils/dates.py:27 -msgid "April" -msgstr "Aprīlis" - -#: utils/dates.py:14 utils/dates.py:27 -msgid "May" -msgstr "Maijs" - -#: utils/dates.py:14 utils/dates.py:27 -msgid "June" -msgstr "Jūnijs" - -#: utils/dates.py:15 utils/dates.py:27 -msgid "July" -msgstr "Jūlijs" - -#: utils/dates.py:15 -msgid "August" -msgstr "Augusts" - -#: utils/dates.py:15 -msgid "September" -msgstr "Septembris" - -#: utils/dates.py:15 -msgid "October" -msgstr "Oktobris" - -#: utils/dates.py:15 -msgid "November" -msgstr "Novembris" - -#: utils/dates.py:16 -msgid "December" -msgstr "Decembris" - -#: 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 "mai" - -#: utils/dates.py:19 -msgid "jun" -msgstr "jūn" - -#: utils/dates.py:20 -msgid "jul" -msgstr "jūl" - -#: utils/dates.py:20 -msgid "aug" -msgstr "aug" - -#: utils/dates.py:20 -msgid "sep" -msgstr "sep" - -#: utils/dates.py:20 -msgid "oct" -msgstr "okt" - -#: 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/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 "" - -#: oldforms/__init__.py:387 +#: core/validators.py:143 #, python-format -msgid "Ensure your text is less than %s character." -msgid_plural "Ensure your text is less than %s characters." +msgid "Invalid date: %s" +msgstr "Nekorekts datums: %s" + +#: core/validators.py:153 +msgid "Enter a valid time in HH:MM format." +msgstr "Ievadiet korektu laiku HH:MM formātā" + +#: core/validators.py:162 +#: newforms/fields.py:271 +msgid "Enter a valid e-mail address." +msgstr "Ievadiet korektu e-pasta adresi." + +#: core/validators.py:178 +msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image." +msgstr "Augšupielādējiet korektu attēlu. Fails, ko Jūs augšupielādējāt nav attēls vai arī bojāts attēla fails." + +#: core/validators.py:185 +#, python-format +msgid "The URL %s does not point to a valid image." +msgstr "URL %s nesatur korektu attēlu." + +#: core/validators.py:189 +#, python-format +msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +msgstr "Telefona numuriem jābūt XXX-XXX-XXXX formātā. \"%s\" is nekorekts." + +#: core/validators.py:197 +#, python-format +msgid "The URL %s does not point to a valid QuickTime video." +msgstr "URL %s nenorāda uz korektu QuickTime video." + +#: core/validators.py:201 +msgid "A valid URL is required." +msgstr "Reāls URL obligāts." + +#: core/validators.py:215 +#, python-format +msgid "" +"Valid HTML is required. Specific errors are:\n" +"%s" +msgstr "" +"Korekts HTML ir obligāts. Specifiskās kļūdas:\n" +"%s" + +#: core/validators.py:222 +#, python-format +msgid "Badly formed XML: %s" +msgstr "Slikti formēts XML: %s" + +#: core/validators.py:239 +#, python-format +msgid "Invalid URL: %s" +msgstr "Nekorekts URL: %s" + +#: core/validators.py:244 +#: core/validators.py:246 +#, python-format +msgid "The URL %s is a broken link." +msgstr "URL %s ir salauzta saite." + +#: core/validators.py:252 +msgid "Enter a valid U.S. state abbreviation." +msgstr "Ievadiet korektu ASV štata abriviatūru." + +#: 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] "Seko saviem vārdiem! Vārds %s nav atļauts šeit." +msgstr[1] "Seko saviem vārdiem! Vārdi %s nav atļauts šeit." + +#: core/validators.py:273 +#, python-format +msgid "This field must match the '%s' field." +msgstr "Laukam jāsaskan ar %s lauku." + +#: core/validators.py:292 +msgid "Please enter something for at least one field." +msgstr "Lūdzu ievadiet kaut ko vismaz vienā laukā." + +#: core/validators.py:301 +#: core/validators.py:312 +msgid "Please enter both fields or leave them both empty." +msgstr "Lūdzu ievadiet abus laukus vai atstājiet abus tukšus." + +#: core/validators.py:320 +#, python-format +msgid "This field must be given if %(field)s is %(value)s" +msgstr "Šis lauks ir jāaizpilda, ja %(field)s ir vienāds %(value)s" + +#: core/validators.py:333 +#, python-format +msgid "This field must be given if %(field)s is not %(value)s" +msgstr "Šis lauks ir jāaizpilda, ja %(field)s nav vienāds %(value)s" + +#: core/validators.py:352 +msgid "Duplicate values are not allowed." +msgstr "Duplicētas vērtības nav atļautas." + +#: core/validators.py:367 +#, python-format +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "Šai vērtībai jābūt starp %(lower)s un %(upper)s." + +#: core/validators.py:369 +#, python-format +msgid "This value must be at least %s." +msgstr "Šai vērtībai jābūt vismaz %s." + +#: core/validators.py:371 +#, python-format +msgid "This value must be no more than %s." +msgstr "Šai vērtība nedrīkst pārsniegt %s." + +#: core/validators.py:407 +#, python-format +msgid "This value must be a power of %s." +msgstr "Šai vērtībai jābūt %s pakāpei." + +#: core/validators.py:418 +msgid "Please enter a valid decimal number." +msgstr "Lūdzu ievadiet korektu decimālu numuru." + +#: 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] "Lūdzu ievadiet korektu decimālu numuru ar maksimālu ciparu skaitu %s." +msgstr[1] "Lūdzu ievadiet korektu decimālu numuru ar maksimālu ciparu skaitu %s." + +#: core/validators.py:425 +#, python-format +msgid "Please enter a valid decimal number with a whole part of at most %s digit." +msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits." +msgstr[0] "Lūdzu ievadiet korektu decimālu numuru ar maksimālu ciparu skaitu %s." +msgstr[1] "Lūdzu ievadiet korektu decimālu numuru ar maksimālu ciparu skaitu %s." + +#: core/validators.py:428 +#, python-format +msgid "Please enter a valid decimal number with at most %s decimal place." +msgid_plural "Please enter a valid decimal number with at most %s decimal places." +msgstr[0] "Lūdzu ievadiet korektu decimālu numuru ar maksimālu ciparu skaitu aiz komata %s." +msgstr[1] "Lūdzu ievadiet korektu decimālu numuru ar maksimālu ciparu skaitu aiz komata %s." + +#: core/validators.py:438 +#, python-format +msgid "Make sure your uploaded file is at least %s bytes big." +msgstr "Pārliecinieties, ka jūsu augšupielādētais fails ir vismaz %s baiti liels." + +#: core/validators.py:439 +#, python-format +msgid "Make sure your uploaded file is at most %s bytes big." +msgstr "Pārliecinieties, ka jūsu augšupielādētais fails ir maksimums %s baiti liels." + +#: core/validators.py:456 +msgid "The format for this field is wrong." +msgstr "Šī faila formāts ir nekorekts." + +#: core/validators.py:471 +msgid "This field is invalid." +msgstr "Šis lauks ir nekorekts." + +#: core/validators.py:507 +#, python-format +msgid "Could not retrieve anything from %s." +msgstr "Nevar neko no %s" + +#: core/validators.py:510 +#, python-format +msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "URL %(url)s atgrieza nekorektu Content-Type headeri '%(contenttype)s'." + +#: core/validators.py:543 +#, python-format +msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)" +msgstr "Lūdzu aiztaisiet neaiztaisīto %(tag)s tagu no rindas nr %(line)s. (Rinda sākas ar \"%(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 "" + +#: core/validators.py:552 +#, python-format +msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)" +msgstr "" + +#: core/validators.py:557 +#, python-format +msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)" +msgstr "" + +#: 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 "" + +#: 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 "" + +#: views/generic/create_update.py:43 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "%(verbose_name)s tika veiksmīgi izveidots." + +#: views/generic/create_update.py:117 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "%(verbose_name)s tika veiksmīgi dzēsts." + +#: views/generic/create_update.py:184 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "%(verbose_name)s tika dzēsts." + +#: newforms/models.py:165 +#: newforms/fields.py:364 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "Izvēlaties pareizu izvēli. Jūsu izvēlētais objekts neietilpst pieejamo sarakstā." + +#: newforms/models.py:182 +#: newforms/fields.py:380 +#: newforms/fields.py:456 +msgid "Enter a list of values." +msgstr "Ievadiet sarakstu ar vērtībām." + +#: newforms/models.py:188 +#: newforms/fields.py:389 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "Izvēlieties pareizu izvēli. %s nav pieejamo izvēļu sarakstā." + +#: newforms/fields.py:103 +#: newforms/fields.py:256 +#, python-format +msgid "Ensure this value has at most %d characters." +msgstr "Vērtībai jasatur ne vairāk, kā %d rakstzīmju." + +#: newforms/fields.py:105 +#: newforms/fields.py:258 +#, python-format +msgid "Ensure this value has at least %d characters." +msgstr "Vērtībai jasatur vismaz %d rakstzīmju." + +#: newforms/fields.py:130 +#, python-format +msgid "Ensure this value is less than or equal to %s." +msgstr "Šai vērtībai jabūt mazākai vai vienādai ar %s." + +#: newforms/fields.py:132 +#, python-format +msgid "Ensure this value is greater than or equal to %s." +msgstr "Vērtībai jabūt lielākai vai vienādai ar %s." + +#: newforms/fields.py:165 +msgid "Enter a valid date." +msgstr "Ievadiet korektu datumu." + +#: newforms/fields.py:192 +msgid "Enter a valid time." +msgstr "Ievadiet korektu laiku." + +#: newforms/fields.py:228 +msgid "Enter a valid date/time." +msgstr "Ievadiet korektu datumu/laiku." + +#: newforms/fields.py:242 +msgid "Enter a valid value." +msgstr "Ievadiet korektu vērtību." + +#: newforms/fields.py:289 +#: newforms/fields.py:311 +msgid "Enter a valid URL." +msgstr "Ievadiet korektu adresi." + +#: newforms/fields.py:313 +msgid "This URL appears to be a broken link." +msgstr "Šī adrese ir bojāta." + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "th" +msgstr "th" + +#: contrib/humanize/templatetags/humanize.py:17 +#, fuzzy +msgid "st" +msgstr "saits" + +#: contrib/humanize/templatetags/humanize.py:17 +#, fuzzy +msgid "nd" +msgstr "un" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "rd" +msgstr "rd" + +#: contrib/humanize/templatetags/humanize.py:47 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" msgstr[0] "" msgstr[1] "" -#: oldforms/__init__.py:392 -msgid "Line breaks are not allowed here." -msgstr "Pārnešana jaunā rindā šeit nav atļauta." - -#: oldforms/__init__.py:493 oldforms/__init__.py:566 oldforms/__init__.py:605 +#: contrib/humanize/templatetags/humanize.py:50 #, python-format -msgid "Select a valid choice; '%(data)s' is not in %(choices)s." -msgstr "" +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "" +msgstr[1] "" -#: oldforms/__init__.py:572 contrib/admin/filterspecs.py:150 -#: newforms/widgets.py:162 -msgid "Unknown" -msgstr "Nezināms" +#: contrib/humanize/templatetags/humanize.py:53 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "" +msgstr[1] "" -#: oldforms/__init__.py:572 contrib/admin/filterspecs.py:143 -#: newforms/widgets.py:162 -msgid "Yes" -msgstr "Jā" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "one" +msgstr "viens" -#: oldforms/__init__.py:572 contrib/admin/filterspecs.py:143 -#: newforms/widgets.py:162 -msgid "No" -msgstr "Nē" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "two" +msgstr "divi" -#: oldforms/__init__.py:667 core/validators.py:173 core/validators.py:442 -msgid "No file was submitted. Check the encoding type on the form." -msgstr "" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "three" +msgstr "trīs" -#: oldforms/__init__.py:669 -msgid "The submitted file is empty." -msgstr "Jūsu norādītais fails ir tukšs." +#: contrib/humanize/templatetags/humanize.py:68 +msgid "four" +msgstr "četri" -#: oldforms/__init__.py:725 -msgid "Enter a whole number between -32,768 and 32,767." -msgstr "Ievadiet veselu skaitli intervālā no -32,768 līdz 32,767." +#: contrib/humanize/templatetags/humanize.py:68 +msgid "five" +msgstr "pieci" -#: oldforms/__init__.py:735 -msgid "Enter a positive number." -msgstr "Ievadiet pozitīvu skaitli." +#: contrib/humanize/templatetags/humanize.py:68 +msgid "six" +msgstr "seši" -#: oldforms/__init__.py:745 -msgid "Enter a whole number between 0 and 32,767." -msgstr "Ievadiet veselu skaitli intervāla starp 0 un 32,767." +#: contrib/humanize/templatetags/humanize.py:68 +msgid "seven" +msgstr "septiņi" -#: contrib/sessions/models.py:51 -msgid "session key" -msgstr "sesijas atslēga" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "eight" +msgstr "astoņi" -#: contrib/sessions/models.py:52 -msgid "session data" -msgstr "sesijas dati" - -#: contrib/sessions/models.py:53 -msgid "expire date" -msgstr "beigu datums" - -#: contrib/sessions/models.py:57 -msgid "session" -msgstr "sesija" - -#: contrib/sessions/models.py:58 -msgid "sessions" -msgstr "sesijas" - -#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 -msgid "The two password fields didn't match." -msgstr "" - -#: contrib/auth/forms.py:25 -msgid "A user with that username already exists." -msgstr "" - -#: contrib/auth/forms.py:53 -msgid "" -"Your Web browser doesn't appear to have cookies enabled. Cookies are " -"required for logging in." -msgstr "" -"Izskatās, ka Jūsu pārlūks neatbalsta cookies. Cookies ir obligātas, lai " -"pieslēgtos." - -#: contrib/auth/forms.py:60 contrib/admin/views/decorators.py:10 -msgid "" -"Please enter a correct username and password. Note that both fields are case-" -"sensitive." -msgstr "" -"Lūdzu ievadiet lietotājvārdu un paroli. Atceraties ka abi lauki ir " -"reģistrjūtīgi." - -#: contrib/auth/forms.py:62 -msgid "This account is inactive." -msgstr "" - -#: contrib/auth/forms.py:85 -msgid "" -"That e-mail address doesn't have an associated user account. Are you sure " -"you've registered?" -msgstr "" - -#: contrib/auth/forms.py:117 -msgid "The two 'new password' fields didn't match." -msgstr "" - -#: contrib/auth/forms.py:124 -msgid "Your old password was entered incorrectly. Please enter it again." -msgstr "" - -#: contrib/auth/views.py:39 -#, fuzzy -msgid "Logged out" -msgstr "Izlogoties" - -#: contrib/auth/models.py:38 contrib/auth/models.py:57 -msgid "name" -msgstr "nosaukums" - -#: contrib/auth/models.py:40 -msgid "codename" -msgstr "kods" - -#: contrib/auth/models.py:42 -msgid "permission" -msgstr "tiesība" - -#: contrib/auth/models.py:43 contrib/auth/models.py:58 -msgid "permissions" -msgstr "tiesības" - -#: contrib/auth/models.py:60 -msgid "group" -msgstr "grupa" - -#: contrib/auth/models.py:61 contrib/auth/models.py:100 -msgid "groups" -msgstr "grupas" - -#: contrib/auth/models.py:90 -msgid "username" -msgstr "lietotāja vārds" - -#: 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 "vārds" - -#: contrib/auth/models.py:92 -msgid "last name" -msgstr "uzvārds" - -#: contrib/auth/models.py:93 -msgid "e-mail address" -msgstr "e-pasta adrese" - -#: contrib/auth/models.py:94 -msgid "password" -msgstr "parole" - -#: contrib/auth/models.py:94 -msgid "" -"Use '[algo]$[salt]$[hexdigest]' or use the change " -"password form." -msgstr "" - -#: contrib/auth/models.py:95 -msgid "staff status" -msgstr "personāla statuss" - -#: contrib/auth/models.py:95 -msgid "Designates whether the user can log into this admin site." -msgstr "" -"Atzīmējiet, ja vēlaties, lai lietotājs var pieslēgties administrācijas lapā." - -#: contrib/auth/models.py:96 -msgid "active" -msgstr "aktīvs" - -#: contrib/auth/models.py:96 -#, fuzzy -msgid "" -"Designates whether this user can log into the Django admin. Unselect this " -"instead of deleting accounts." -msgstr "" -"Atzīmējiet, ja vēlaties, lai lietotājs var pieslēgties administrācijas lapā." - -#: contrib/auth/models.py:97 -msgid "superuser status" -msgstr "superlietotāja statuss" - -#: 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 "pēdējoreiz pieslēdzies" - -#: contrib/auth/models.py:99 -msgid "date joined" -msgstr "datums, kad pievienojies" - -#: 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 "" -"Papildus manuāli piešķirtajām atļaujām, šis lietotājs papildus iegūs visas " -"atļaujas, kas piešķirtas grupām, kurās lietotājs atrodas." - -#: contrib/auth/models.py:102 -msgid "user permissions" -msgstr "lietotāja atļaujas" - -#: contrib/auth/models.py:105 -msgid "user" -msgstr "lietotājs" - -#: contrib/auth/models.py:106 -msgid "users" -msgstr "lietotāji" - -#: contrib/auth/models.py:111 -msgid "Personal info" -msgstr "Personīgā informācija" - -#: contrib/auth/models.py:112 -msgid "Permissions" -msgstr "Atļaujas" - -#: contrib/auth/models.py:113 -msgid "Important dates" -msgstr "Svarīgi datumi" - -#: contrib/auth/models.py:114 -msgid "Groups" -msgstr "Grupas" - -#: contrib/auth/models.py:258 -msgid "message" -msgstr "ziņojums" - -#: contrib/contenttypes/models.py:26 -msgid "python model class name" -msgstr "python modeļa klases nosaukums" - -#: contrib/contenttypes/models.py:29 -msgid "content type" -msgstr "" - -#: contrib/contenttypes/models.py:30 -msgid "content types" -msgstr "satura tips" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "nine" +msgstr "deviņi" #: contrib/redirects/models.py:7 msgid "redirect from" msgstr "novirzīt(redirect) no" #: contrib/redirects/models.py:8 -msgid "" -"This should be an absolute path, excluding the domain name. Example: '/" -"events/search/'." -msgstr "" -"Tam jābūt absolūtajam ceļam, ieskaitot domēna vārdu. Piemēram: '/events/" -"search/'." +msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'." +msgstr "Tam jābūt absolūtajam ceļam, ieskaitot domēna vārdu. Piemēram: '/events/search/'." #: contrib/redirects/models.py:9 msgid "redirect to" msgstr "novirzīt(redirect) uz" #: contrib/redirects/models.py:10 -msgid "" -"This can be either an absolute path (as above) or a full URL starting with " -"'http://'." -msgstr "" -"Tas ir vai nu absolūtais ceļš (kā pirms tam) vai pilnais URL, kas sākas ar " -"'http://'." +msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'." +msgstr "Tas ir vai nu absolūtais ceļš (kā pirms tam) vai pilnais URL, kas sākas ar 'http://'." #: contrib/redirects/models.py:13 msgid "redirect" @@ -721,61 +753,8 @@ msgstr "novirzīt" msgid "redirects" msgstr "novirzījumi" -#: contrib/flatpages/models.py:7 contrib/admin/views/doc.py:315 -msgid "URL" -msgstr "" - -#: contrib/flatpages/models.py:8 -msgid "" -"Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "" -"Piemēram: '/about/contact/'. Pārliecinieties, ka esat ievietojuši sākuma un " -"beigu slīpsvītras." - -#: contrib/flatpages/models.py:9 -msgid "title" -msgstr "virsraksts" - -#: contrib/flatpages/models.py:10 -msgid "content" -msgstr "saturs" - -#: contrib/flatpages/models.py:11 -msgid "enable comments" -msgstr "ieslēgt komentārus" - -#: contrib/flatpages/models.py:12 -msgid "template name" -msgstr "šablona nosaukums" - -#: contrib/flatpages/models.py:13 -#, fuzzy -msgid "" -"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " -"will use 'flatpages/default.html'." -msgstr "" -"Piemēram: 'flatpages/contact_page'. Ja tas nav norādīts, sistēma lietos " -"'flatpages/default'." - -#: contrib/flatpages/models.py:14 -msgid "registration required" -msgstr "reģistrācija obligāta" - -#: contrib/flatpages/models.py:14 -msgid "If this is checked, only logged-in users will be able to view the page." -msgstr "" -"Ja tas ir atzīmēts, tikai lietotāji, kas ir pieslēgušies sistēmās redzēs šo " -"lapu." - -#: contrib/flatpages/models.py:18 -msgid "flat page" -msgstr "vienkārša lapa" - -#: contrib/flatpages/models.py:19 -msgid "flat pages" -msgstr "vienkāršas lapas" - -#: contrib/comments/models.py:67 contrib/comments/models.py:166 +#: contrib/comments/models.py:67 +#: contrib/comments/models.py:166 msgid "object ID" msgstr "objekta ID" @@ -783,7 +762,8 @@ msgstr "objekta ID" msgid "headline" msgstr "virsraksts" -#: contrib/comments/models.py:69 contrib/comments/models.py:90 +#: contrib/comments/models.py:69 +#: contrib/comments/models.py:90 #: contrib/comments/models.py:167 msgid "comment" msgstr "komentārs" @@ -824,15 +804,18 @@ msgstr "reitings #8" msgid "is valid rating" msgstr "korekts reitings" -#: contrib/comments/models.py:83 contrib/comments/models.py:169 +#: contrib/comments/models.py:83 +#: contrib/comments/models.py:169 msgid "date/time submitted" msgstr "ievietošanas datums/laiks" -#: contrib/comments/models.py:84 contrib/comments/models.py:170 +#: contrib/comments/models.py:84 +#: contrib/comments/models.py:170 msgid "is public" msgstr "publisks" -#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304 +#: contrib/comments/models.py:85 +#: contrib/admin/views/doc.py:304 msgid "IP address" msgstr "IP adrese" @@ -841,18 +824,15 @@ msgid "is removed" msgstr "idzēsts" #: 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 "" -"Atķeksējiet, ja komentārs ir neatbilstošs. Paziņojums A \"Šis komentārs ir " -"izdzēsts\" tiks parādīts tai vietā." +msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead." +msgstr "Atķeksējiet, ja komentārs ir neatbilstošs. Paziņojums A \"Šis komentārs ir izdzēsts\" tiks parādīts tai vietā." #: contrib/comments/models.py:91 msgid "comments" msgstr "komentāri" -#: contrib/comments/models.py:131 contrib/comments/models.py:207 +#: contrib/comments/models.py:131 +#: contrib/comments/models.py:207 msgid "Content object" msgstr "Satura objekts" @@ -957,6 +937,77 @@ msgstr "moderācijas dzēšanas" msgid "Moderator deletion by %r" msgstr "Moderācijas dzēšana, veicis %r" +#: contrib/comments/views/karma.py:19 +msgid "Anonymous users cannot vote" +msgstr "Anonīmie lietotāji nedrīkst balsot" + +#: contrib/comments/views/karma.py:23 +msgid "Invalid comment ID" +msgstr "Invalīds komentāru ID" + +#: contrib/comments/views/karma.py:25 +msgid "No voting for yourself" +msgstr "Nedrīkst balsot par sevi" + +#: contrib/comments/views/comments.py:27 +msgid "This rating is required because you've entered at least one other rating." +msgstr "Šis reiting ir obligāts jo Jūs ievietojāt vismaz vienu citu reitingu." + +#: 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] "" +"Šo komentāru ir ievietojis lietotājs, kas ievietojis mazāk kā %(count)s komentāru:\n" +"\n" +"%(text)s" +msgstr[1] "" +"Šo komentāru ir ievietojis lietotājs, kas ievietojis mazāk kā %(count)s komentārus:\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 "" +"Šo komentāru ieviejis paviršs lietotājs:\n" +"\n" +"%(text)s" + +#: contrib/comments/views/comments.py:188 +#: contrib/comments/views/comments.py:280 +msgid "Only POSTs are allowed" +msgstr "Atļauti tikai POST izsaukumi" + +#: contrib/comments/views/comments.py:192 +#: contrib/comments/views/comments.py:284 +msgid "One or more of the required fields wasn't submitted" +msgstr "Viens vai vairāki pieprasītie lauki netika ievadīti" + +#: contrib/comments/views/comments.py:196 +#: contrib/comments/views/comments.py:286 +msgid "Somebody tampered with the comment form (security violation)" +msgstr "Kāds ir iejaucies komentāru formā (drošības traucējums)" + +#: 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 "Komentāru forma ir nekorekts 'target' parametrs -- objekta ID bija nepareizs" + +#: contrib/comments/views/comments.py:257 +#: contrib/comments/views/comments.py:321 +msgid "The comment form didn't provide either 'preview' or 'post'" +msgstr "Komentāru forma nenodrošināja 'preview' vai 'post'" + #: contrib/comments/templates/comments/form.html:6 #: contrib/comments/templates/comments/form.html:8 #: contrib/admin/templates/admin/login.html:17 @@ -964,24 +1015,24 @@ msgid "Username:" msgstr "Lietotāja vārds:" #: contrib/comments/templates/comments/form.html:6 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 -#: contrib/admin/templates/admin_doc/missing_docutils.html:4 -#: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 -#: contrib/admin/templates/admin_doc/view_index.html:5 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 -#: contrib/admin/templates/admin_doc/model_detail.html:3 -#: contrib/admin/templates/admin_doc/model_index.html:5 -#: contrib/admin/templates/admin_doc/index.html:4 -#: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/delete_confirmation.html:3 #: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/delete_confirmation.html:3 #: contrib/admin/templates/admin/base.html:25 #: contrib/admin/templates/admin/auth/user/change_password.html:9 -#: contrib/admin/templates/registration/password_change_form.html:3 #: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 msgid "Log out" msgstr "Izlogoties" @@ -1026,85 +1077,6 @@ msgstr "Pirmsskatīt komentāru" msgid "Your name:" msgstr "Jūsu vārds:" -#: contrib/comments/views/karma.py:19 -msgid "Anonymous users cannot vote" -msgstr "Anonīmie lietotāji nedrīkst balsot" - -#: contrib/comments/views/karma.py:23 -msgid "Invalid comment ID" -msgstr "Invalīds komentāru ID" - -#: contrib/comments/views/karma.py:25 -msgid "No voting for yourself" -msgstr "Nedrīkst balsot par sevi" - -#: contrib/comments/views/comments.py:27 -msgid "" -"This rating is required because you've entered at least one other rating." -msgstr "Šis reiting ir obligāts jo Jūs ievietojāt vismaz vienu citu reitingu." - -#: 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] "" -"Šo komentāru ir ievietojis lietotājs, kas ievietojis mazāk kā %(count)s " -"komentāru:\n" -"\n" -"%(text)s" -msgstr[1] "" -"Šo komentāru ir ievietojis lietotājs, kas ievietojis mazāk kā %(count)s " -"komentārus:\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 "" -"Šo komentāru ieviejis paviršs lietotājs:\n" -"\n" -"%(text)s" - -#: contrib/comments/views/comments.py:188 -#: contrib/comments/views/comments.py:280 -msgid "Only POSTs are allowed" -msgstr "Atļauti tikai POST izsaukumi" - -#: contrib/comments/views/comments.py:192 -#: contrib/comments/views/comments.py:284 -msgid "One or more of the required fields wasn't submitted" -msgstr "Viens vai vairāki pieprasītie lauki netika ievadīti" - -#: contrib/comments/views/comments.py:196 -#: contrib/comments/views/comments.py:286 -msgid "Somebody tampered with the comment form (security violation)" -msgstr "Kāds ir iejaucies komentāru formā (drošības traucējums)" - -#: 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 "" -"Komentāru forma ir nekorekts 'target' parametrs -- objekta ID bija nepareizs" - -#: contrib/comments/views/comments.py:257 -#: contrib/comments/views/comments.py:321 -msgid "The comment form didn't provide either 'preview' or 'post'" -msgstr "Komentāru forma nenodrošināja 'preview' vai 'post'" - #: contrib/sites/models.py:10 msgid "domain name" msgstr "domēna vārds" @@ -1128,8 +1100,10 @@ msgid "" "
                      \n" msgstr "" -#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88 -#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169 +#: contrib/admin/filterspecs.py:70 +#: contrib/admin/filterspecs.py:88 +#: contrib/admin/filterspecs.py:143 +#: contrib/admin/filterspecs.py:169 msgid "All" msgstr "Visi" @@ -1181,514 +1155,41 @@ msgstr "žurnāla ieraksts" msgid "log entries" msgstr "žurnāla ieraksti" -#: contrib/admin/templatetags/admin_list.py:238 +#: contrib/admin/templatetags/admin_list.py:247 msgid "All dates" msgstr "Visi datumi" -#: contrib/admin/templates/admin_doc/bookmarklets.html:3 -#: contrib/admin/templates/admin/500.html:4 -#: contrib/admin/templates/admin/invalid_setup.html:4 -#: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/delete_confirmation.html:6 -#: contrib/admin/templates/admin/change_list.html:6 -#: contrib/admin/templates/admin/change_form.html:13 -#: contrib/admin/templates/admin/base.html:30 -#: contrib/admin/templates/admin/auth/user/change_password.html:12 -#: contrib/admin/templates/registration/logged_out.html:4 -#: contrib/admin/templates/registration/password_reset_done.html:4 -#: contrib/admin/templates/registration/password_change_form.html:4 -#: contrib/admin/templates/registration/password_change_done.html:4 -#: contrib/admin/templates/registration/password_reset_form.html:4 -msgid "Home" -msgstr "Sākums" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:3 -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/admin/base.html:25 -#: contrib/admin/templates/admin/auth/user/change_password.html:9 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/registration/password_change_done.html:3 -msgid "Documentation" -msgstr "Dokumentācija" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:3 -msgid "Bookmarklets" -msgstr "Grāmatzīmes" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 -#: contrib/admin/templates/admin_doc/missing_docutils.html:4 -#: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 -#: contrib/admin/templates/admin_doc/view_index.html:5 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 -#: contrib/admin/templates/admin_doc/model_detail.html:3 -#: contrib/admin/templates/admin_doc/model_index.html:5 -#: contrib/admin/templates/admin_doc/index.html:4 -#: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/admin/base.html:25 -#: contrib/admin/templates/admin/auth/user/change_password.html:9 -#: contrib/admin/templates/admin/auth/user/change_password.html:15 -#: contrib/admin/templates/admin/auth/user/change_password.html:46 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/registration/password_change_done.html:3 -msgid "Change password" -msgstr "Paroles maiņa" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:5 -msgid "Documentation bookmarklets" -msgstr "Dokumentācijas grāmatzīmes" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:9 -msgid "" -"\n" -"

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

                      \n" -msgstr "" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:19 -msgid "Documentation for this page" -msgstr "Dokumentācija šai lapai" - -#: 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 "" -"Pārvieto jūs no jebkuras lapas dokumentācijā uz skatu, kas ģenerē šo lapu." - -#: contrib/admin/templates/admin_doc/bookmarklets.html:22 -msgid "Show object ID" -msgstr "Parādīt objekta ID" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:23 -msgid "" -"Shows the content-type and unique ID for pages that represent a single " -"object." -msgstr "" -"Parāda content-type un unikālo ID lapām, kas atspoguļo vientuļu objektu." - -#: contrib/admin/templates/admin_doc/bookmarklets.html:25 -msgid "Edit this object (current window)" -msgstr "Labot šo objektu (patreizējā logā)" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:26 -msgid "Jumps to the admin page for pages that represent a single object." -msgstr "" -"Pāriet uz admininstrācijas lapu tām lapām, kas atspoguļo vientuļu objektu." - -#: contrib/admin/templates/admin_doc/bookmarklets.html:28 -msgid "Edit this object (new window)" -msgstr "Labot šo lapu (jaunā logā)" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:29 -msgid "As above, but opens the admin page in a new window." -msgstr "Tāpat kā iepriekš, tikai atver administrācijas lapu jaunā logā." - -#: contrib/admin/templates/admin/submit_line.html:3 -#: contrib/admin/templates/admin/delete_confirmation.html:9 -msgid "Delete" -msgstr "Dzēst" - -#: contrib/admin/templates/admin/submit_line.html:4 -msgid "Save as new" -msgstr "Saglabāt kā jaunu" - -#: contrib/admin/templates/admin/submit_line.html:5 -msgid "Save and add another" -msgstr "Saglabāt un pievienot vēl vienu" - -#: contrib/admin/templates/admin/submit_line.html:6 -msgid "Save and continue editing" -msgstr "Saglabāt un turpināt labošanu" - -#: contrib/admin/templates/admin/submit_line.html:7 -msgid "Save" -msgstr "Saglabāt" - -#: contrib/admin/templates/admin/500.html:4 -msgid "Server error" -msgstr "Servera kļūda" - -#: contrib/admin/templates/admin/500.html:6 -msgid "Server error (500)" -msgstr "Servera kļūda (500)" - -#: contrib/admin/templates/admin/500.html:9 -msgid "Server Error (500)" -msgstr "Servera kļūda (500)" - -#: contrib/admin/templates/admin/500.html:10 -msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." -msgstr "" -"Ir notikusi kļūda. Tas ir paziņots saita administratoriem ar e-pasta " -"starpniecību un visdrīzākajā laikā tiks izlabots. Paldies par sapratni." - -#: contrib/admin/templates/admin/filter.html:2 -#, fuzzy, python-format -msgid " By %(filter_title)s " -msgstr "Pēc %(title)s " - -#: contrib/admin/templates/admin/filters.html:4 -msgid "Filter" -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/search_form.html:8 -msgid "Go" -msgstr "Aiziet!" - -#: contrib/admin/templates/admin/search_form.html:10 +#: contrib/admin/views/auth.py:19 +#: contrib/admin/views/main.py:257 #, python-format -msgid "1 result" -msgid_plural "%(counter)s results" -msgstr[0] "" -msgstr[1] "" +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "%(name)s \"%(obj)s\" pievienots sekmīgi." -#: contrib/admin/templates/admin/search_form.html:10 +#: 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 "Jūs varat labot to atkal zemāk." + +#: contrib/admin/views/auth.py:30 +msgid "Add user" +msgstr "Pievienot lietotāju" + +#: contrib/admin/views/auth.py:57 +msgid "Password changed successfully." +msgstr "Paroles maiņa notikusi veiksmīgi." + +#: contrib/admin/views/auth.py:64 #, python-format -msgid "%(full_result_count)s total" -msgstr "" - -#: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/change_form.html:21 -msgid "History" -msgstr "Vēsture" - -#: contrib/admin/templates/admin/object_history.html:18 -msgid "Date/time" -msgstr "Datums/laiks" - -#: contrib/admin/templates/admin/object_history.html:19 -msgid "User" -msgstr "Lietotājs" - -#: contrib/admin/templates/admin/object_history.html:20 -msgid "Action" -msgstr "darbība" - -#: contrib/admin/templates/admin/object_history.html:26 -msgid "DATE_WITH_TIME_FULL" -msgstr "j. N Y, H:i" - -#: contrib/admin/templates/admin/object_history.html:36 -msgid "" -"This object doesn't have a change history. It probably wasn't added via this " -"admin site." -msgstr "" -"Šim objektam nav izmaiņu vēsture. Tas visdrīzāk nav pievienots izmantojot " -"administrācijas saitu." - -#: contrib/admin/templates/admin/delete_confirmation.html:14 -#, fuzzy, python-format -msgid "" -"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " -"related objects, but your account doesn't have permission to delete the " -"following types of objects:" -msgstr "" -"Izdzēšot objektu %(object_name)s '%(object)s' tiks dzēsti visi saistītie " -"objekti , bet Jums nav tiesību dzēst sekojošus objektu tipus:" - -#: contrib/admin/templates/admin/delete_confirmation.html:21 -#, fuzzy, python-format -msgid "" -"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " -"All of the following related items will be deleted:" -msgstr "" -"Vai esat pārliecināts, ka vēlaties dzēst %(object_name)s \"%(object)s\"? " -"Tiks dzēsti sekojoši objekti:" - -#: contrib/admin/templates/admin/delete_confirmation.html:26 -msgid "Yes, I'm sure" -msgstr "Jā, es esmu pārliecināts" - -#: contrib/admin/templates/admin/pagination.html:10 -msgid "Show all" -msgstr "" - -#: contrib/admin/templates/admin/change_list.html:12 -#, python-format -msgid "Add %(name)s" -msgstr "Pievienot %(name)s" - -#: contrib/admin/templates/admin/change_form.html:15 -#: contrib/admin/templates/admin/index.html:28 -msgid "Add" -msgstr "Pievienot" - -#: contrib/admin/templates/admin/change_form.html:22 -msgid "View on site" -msgstr "Apskatīt saitā" - -#: 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ūdzu izlabojiet kļūdu zemāk" -msgstr[1] "Lūdzu izlabojiet kļūdas zemāk" - -#: contrib/admin/templates/admin/change_form.html:50 -msgid "Ordering" -msgstr "Sakārtošana" - -#: contrib/admin/templates/admin/change_form.html:53 -msgid "Order:" -msgstr "Sakārtojums:" - -#: contrib/admin/templates/admin/base.html:25 -msgid "Welcome," -msgstr "Sveicināti," - -#: contrib/admin/templates/admin/404.html:4 -#: contrib/admin/templates/admin/404.html:8 -msgid "Page not found" -msgstr "Lapa nav atrasta" - -#: contrib/admin/templates/admin/404.html:10 -msgid "We're sorry, but the requested page could not be found." -msgstr "Mēs atvainojamies, bet pieprasītā lapa nevar tikt atrasta." - -#: contrib/admin/templates/admin/login.html:25 -#: contrib/admin/views/decorators.py:24 -msgid "Log in" -msgstr "Pieslēdzieties" - -#: contrib/admin/templates/admin/index.html:17 -#, python-format -msgid "Models available in the %(name)s application." -msgstr "Modeļi, kas pieejami %(name)s aplikācijā." - -#: contrib/admin/templates/admin/index.html:18 -#, fuzzy, python-format -msgid "%(name)s" -msgstr "Pievienot %(name)s" - -#: contrib/admin/templates/admin/index.html:34 -msgid "Change" -msgstr "Izmainīt" - -#: contrib/admin/templates/admin/index.html:44 -msgid "You don't have permission to edit anything." -msgstr "Jums nav tiesības jebko labot." - -#: contrib/admin/templates/admin/index.html:52 -msgid "Recent Actions" -msgstr "Nesenās darbības" - -#: contrib/admin/templates/admin/index.html:53 -msgid "My Actions" -msgstr "Manas darbības" - -#: contrib/admin/templates/admin/index.html:57 -msgid "None available" -msgstr "Nav pieejams" - -#: contrib/admin/templates/admin/base_site.html:4 -msgid "Django site admin" -msgstr "Django saita administrācija" - -#: contrib/admin/templates/admin/base_site.html:7 -msgid "Django administration" -msgstr "Django administrēšana" - -#: 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 -#, fuzzy -msgid "Username" -msgstr "Lietotāja vārds:" - -#: contrib/admin/templates/admin/auth/user/add_form.html:18 -#: contrib/admin/templates/admin/auth/user/change_password.html:34 -#, fuzzy -msgid "Password" -msgstr "Parole:" - -#: contrib/admin/templates/admin/auth/user/add_form.html:23 -#: contrib/admin/templates/admin/auth/user/change_password.html:39 -#, fuzzy -msgid "Password (again)" -msgstr "Paroles maiņa" - -#: contrib/admin/templates/admin/auth/user/add_form.html:24 -#: contrib/admin/templates/admin/auth/user/change_password.html:40 -msgid "Enter the same password as above, for verification." -msgstr "" - -#: contrib/admin/templates/admin/auth/user/change_password.html:28 -#, python-format -msgid "Enter a new password for the user %(username)s." -msgstr "" - -#: contrib/admin/templates/widget/file.html:2 -msgid "Currently:" -msgstr "Patreiz:" - -#: contrib/admin/templates/widget/file.html:3 -msgid "Change:" -msgstr "Nomainīt:" - -#: contrib/admin/templates/widget/date_time.html:3 -msgid "Date:" -msgstr "Datums:" - -#: contrib/admin/templates/widget/date_time.html:4 -msgid "Time:" -msgstr "Laiks:" - -#: contrib/admin/templates/registration/logged_out.html:8 -msgid "Thanks for spending some quality time with the Web site today." -msgstr "Paldies par pavadīto laiku māja lapā." - -#: contrib/admin/templates/registration/logged_out.html:10 -msgid "Log in again" -msgstr "Pieslēgties vēlreiz" - -#: contrib/admin/templates/registration/password_reset_email.html:2 -msgid "You're receiving this e-mail because you requested a password reset" -msgstr "" -"Jūs esat saņēmuši šo e-pastu sakarā ar Jūsu pieprasīto paroles pārstatīšanu" - -#: contrib/admin/templates/registration/password_reset_email.html:3 -#, python-format -msgid "for your user account at %(site_name)s" -msgstr "Jūsu lietotāja kontam %(site_name)s saitā" - -#: contrib/admin/templates/registration/password_reset_email.html:5 -#, python-format -msgid "Your new password is: %(new_password)s" -msgstr "Jūsu jaunais parole ir: %(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 "Jūs vienmēr varat nomainīt šo paroli aizejot uz šo lapu:" - -#: contrib/admin/templates/registration/password_reset_email.html:11 -msgid "Your username, in case you've forgotten:" -msgstr "Jūsu lietotājvārds, ja gadījumā Jūs esat to aizmirsis:" - -#: contrib/admin/templates/registration/password_reset_email.html:13 -msgid "Thanks for using our site!" -msgstr "Paldies par mūsu saita lietošanu!" - -#: contrib/admin/templates/registration/password_reset_email.html:15 -#, python-format -msgid "The %(site_name)s team" -msgstr "%(site_name)s komanda" - -#: contrib/admin/templates/registration/password_reset_done.html:4 -#: contrib/admin/templates/registration/password_reset_form.html:4 -#: contrib/admin/templates/registration/password_reset_form.html:6 -#: contrib/admin/templates/registration/password_reset_form.html:10 -msgid "Password reset" -msgstr "Paroles pārstatīšana(reset)" - -#: contrib/admin/templates/registration/password_reset_done.html:6 -#: contrib/admin/templates/registration/password_reset_done.html:10 -msgid "Password reset successful" -msgstr "Paroles pārstatīšana sekmīga" - -#: 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 "" -"Mēs aizsūtījām pa e-pastu jaunu paroli, ko Jūs esat apstiprinājis. Jūs to " -"drīzumā saņemsiet." - -#: 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 "Paroles maiņa" - -#: 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 "" -"Drošības nolūkos ievadiet veco paroli un pēc tam ievadiet Jūsu jauno paroli " -"divreiz lai mēs varētu pārbaudīt, vai tā ir uzrakstīta pareizi." - -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "Vecā parole:" - -#: contrib/admin/templates/registration/password_change_form.html:19 -msgid "New password:" -msgstr "Jaunā parole:" - -#: contrib/admin/templates/registration/password_change_form.html:21 -msgid "Confirm password:" -msgstr "Apstiprināt paroli:" - -#: contrib/admin/templates/registration/password_change_form.html:23 -msgid "Change my password" -msgstr "Nomainīt manu paroli" - -#: contrib/admin/templates/registration/password_change_done.html:6 -#: contrib/admin/templates/registration/password_change_done.html:10 -msgid "Password change successful" -msgstr "Paroles nomaiņa sekmīga" - -#: contrib/admin/templates/registration/password_change_done.html:12 -msgid "Your password was changed." -msgstr "Jūsu parole ir nomainīta." - -#: 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 "" -"Esat aizmirsuši savu paroli? Ievadiet e-pasta adresi zemāk un mēs " -"pārstatīsim Jūsu paroli un aizsūtīsim jaunu pa e-pastu." - -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "E-mail address:" -msgstr "E-pasta adrese:" - -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "Reset my password" -msgstr "Paroles pārstatīšana" +msgid "Change password: %s" +msgstr "Paroles maiņa: %s" #: contrib/admin/views/main.py:223 msgid "Site administration" msgstr "Saita administrācija" -#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:19 -#, python-format -msgid "The %(name)s \"%(obj)s\" was added successfully." -msgstr "%(name)s \"%(obj)s\" pievienots sekmīgi." - -#: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347 -#: contrib/admin/views/auth.py:24 -msgid "You may edit it again below." -msgstr "Jūs varat labot to atkal zemāk." - -#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356 +#: contrib/admin/views/main.py:271 +#: contrib/admin/views/main.py:356 #, python-format msgid "You may add another %s below." msgstr "Jūs varat pievienot vēl vienu %s zemāk." @@ -1724,8 +1225,7 @@ msgstr "%(name)s \"%(obj)s\" nomainīts sekmīgi." #: contrib/admin/views/main.py:353 #, python-format -msgid "" -"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." msgstr "%(name)s \"%(obj)s\" pievienots sekmīgi. Jūs to varat regiģēt zemāk." #: contrib/admin/views/main.py:391 @@ -1733,59 +1233,61 @@ msgstr "%(name)s \"%(obj)s\" pievienots sekmīgi. Jūs to varat regiģēt zemāk msgid "Change %s" msgstr "Izmainīt %s" -#: 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 "" -#: contrib/admin/views/main.py:478 +#: contrib/admin/views/main.py:481 #, python-format msgid "One or more %(fieldname)s in %(name)s:" msgstr "" -#: contrib/admin/views/main.py:511 +#: contrib/admin/views/main.py:514 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "%(name)s \"%(obj)s\" sekmīgi izdzēsts." -#: contrib/admin/views/main.py:514 +#: contrib/admin/views/main.py:517 msgid "Are you sure?" msgstr "Vai esat pārliecināts?" -#: contrib/admin/views/main.py:536 +#: contrib/admin/views/main.py:539 #, python-format msgid "Change history: %s" msgstr "Izmainīt vēsturi: %s" -#: contrib/admin/views/main.py:570 +#: contrib/admin/views/main.py:573 #, python-format msgid "Select %s" msgstr "Izvēlēties %s" -#: contrib/admin/views/main.py:570 +#: contrib/admin/views/main.py:573 #, python-format msgid "Select %s to change" msgstr "Izvēlēties %s lai izmainītu" -#: contrib/admin/views/main.py:758 +#: contrib/admin/views/main.py:768 msgid "Database error" -msgstr "" +msgstr "Datubāzes kļūda" + +#: 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ūdzu ievadiet lietotājvārdu un paroli. Atceraties ka abi lauki ir reģistrjūtīgi." + +#: contrib/admin/views/decorators.py:24 +#: contrib/admin/templates/admin/login.html:25 +msgid "Log in" +msgstr "Pieslēdzieties" #: 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 "" -"Lūdzu pieslēdzieties vēlreiz, jo jūsu sesija ir novecojusi. Neuztraucieties: " -"Jūsu ievadītie dati ir saglabāti." +msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved." +msgstr "Lūdzu pieslēdzieties vēlreiz, jo jūsu sesija ir novecojusi. Neuztraucieties: Jūsu ievadītie dati ir saglabāti." #: 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 "" -"Izskatās, ka Jūsu pārlūks neatbalsta sīkdatnes (cookies). Lūdzu ieslēdziet " -"sīkdatņu atbalstu, pārlādējiet lapu un mēģiniet vēlreiz." +msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again." +msgstr "Izskatās, ka Jūsu pārlūks neatbalsta sīkdatnes (cookies). Lūdzu ieslēdziet sīkdatņu atbalstu, pārlādējiet lapu un mēģiniet vēlreiz." #: contrib/admin/views/decorators.py:83 msgid "Usernames cannot contain the '@' character." @@ -1796,50 +1298,55 @@ msgstr "Lietotājvārdi nevar saturēt simbolu '@'." msgid "Your e-mail address is not your username. Try '%s' instead." msgstr "Jūsu e-pasta adrese nav jūsu lietotājvārds. Lietojiet '%s' tā vietā." -#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48 +#: 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:77 +#: contrib/admin/views/doc.py:79 #: contrib/admin/views/doc.py:81 msgid "filter:" -msgstr "" +msgstr "filtrs:" -#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137 +#: contrib/admin/views/doc.py:135 +#: contrib/admin/views/doc.py:137 #: contrib/admin/views/doc.py:139 msgid "view:" -msgstr "" +msgstr "skats:" #: contrib/admin/views/doc.py:164 -#, fuzzy, python-format +#, python-format msgid "App %r not found" -msgstr "Lapa nav atrasta" +msgstr "Aplikācija %r netika atrasta" #: contrib/admin/views/doc.py:171 #, python-format -msgid "Model %r not found in app %r" +msgid "Model %(name)r not found in app %(label)r" msgstr "" #: contrib/admin/views/doc.py:183 #, python-format -msgid "the related `%s.%s` object" +msgid "the related `%(label)s.%(type)s` object" msgstr "" -#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205 -#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224 +#: 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 "" +msgstr "modelis:" #: contrib/admin/views/doc.py:214 #, python-format -msgid "related `%s.%s` objects" -msgstr "" +msgid "related `%(label)s.%(name)s` objects" +msgstr "saistītie `%(label)s.%(name)s` objekti" #: contrib/admin/views/doc.py:219 #, python-format msgid "all %s" -msgstr "" +msgstr "visi %s" #: contrib/admin/views/doc.py:224 #, python-format @@ -1851,9 +1358,12 @@ msgstr "" 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 +#: 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 "Vesels skaitlis" @@ -1861,7 +1371,8 @@ msgstr "Vesels skaitlis" msgid "Boolean (Either True or False)" msgstr "Boolean (Pareizs vai Nepareizs)" -#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311 +#: contrib/admin/views/doc.py:293 +#: contrib/admin/views/doc.py:311 #, python-format msgid "String (up to %(maxlength)s)" msgstr "Virkne (līdz pat %(maxlength)s)" @@ -1882,7 +1393,8 @@ msgstr "Datums (ar laiku)" msgid "E-mail address" msgstr "E-pasta adrese" -#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299 +#: contrib/admin/views/doc.py:298 +#: contrib/admin/views/doc.py:299 #: contrib/admin/views/doc.py:302 msgid "File path" msgstr "Faila ceļš" @@ -1911,6 +1423,11 @@ msgstr "Teksts" msgid "Time" msgstr "Laiks" +#: 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 "ASV štats (divi augšējā reģistra burti)" @@ -1924,403 +1441,1425 @@ msgstr "XML teksts" msgid "%s does not appear to be a urlpattern object" msgstr "" -#: contrib/admin/views/auth.py:30 -#, fuzzy -msgid "Add user" -msgstr "Pievienot %s" +#: contrib/admin/templates/widget/file.html:2 +msgid "Currently:" +msgstr "Patreiz:" -#: contrib/admin/views/auth.py:57 -#, fuzzy -msgid "Password changed successfully." -msgstr "Paroles nomaiņa sekmīga" +#: contrib/admin/templates/widget/file.html:3 +msgid "Change:" +msgstr "Nomainīt:" -#: contrib/admin/views/auth.py:64 -#, fuzzy, python-format -msgid "Change password: %s" +#: contrib/admin/templates/widget/date_time.html:3 +msgid "Date:" +msgstr "Datums:" + +#: contrib/admin/templates/widget/date_time.html:4 +msgid "Time:" +msgstr "Laiks:" + +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Documentation" +msgstr "Dokumentācija" + +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:46 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +msgid "Change password" msgstr "Paroles maiņa" -#: newforms/fields.py:101 newforms/fields.py:254 +#: contrib/admin/templates/admin/change_list.html:6 +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/admin/change_form.html:13 +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/base.html:30 +#: contrib/admin/templates/admin/auth/user/change_password.html:12 +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/logged_out.html:4 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Home" +msgstr "Sākums" + +#: contrib/admin/templates/admin/change_list.html:12 #, python-format -msgid "Ensure this value has at most %d characters." -msgstr "" +msgid "Add %(name)s" +msgstr "Pievienot %(name)s" -#: newforms/fields.py:103 newforms/fields.py:256 +#: contrib/admin/templates/admin/filter.html:2 #, python-format -msgid "Ensure this value has at least %d characters." -msgstr "" +msgid " By %(filter_title)s " +msgstr " Pēc %(filter_title)s " -#: newforms/fields.py:126 core/validators.py:120 -msgid "Enter a whole number." -msgstr "Ievadiet veselus skaitļus." +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/change_form.html:21 +msgid "History" +msgstr "Vēsture" -#: newforms/fields.py:128 -#, fuzzy, python-format -msgid "Ensure this value is less than or equal to %s." -msgstr "Šai vērtībai jābūt %s pakāpei." +#: contrib/admin/templates/admin/object_history.html:18 +msgid "Date/time" +msgstr "Datums/laiks" -#: newforms/fields.py:130 +#: contrib/admin/templates/admin/object_history.html:19 +msgid "User" +msgstr "Lietotājs" + +#: contrib/admin/templates/admin/object_history.html:20 +msgid "Action" +msgstr "darbība" + +#: contrib/admin/templates/admin/object_history.html:26 +msgid "DATE_WITH_TIME_FULL" +msgstr "j. N Y, H:i" + +#: contrib/admin/templates/admin/object_history.html:36 +msgid "This object doesn't have a change history. It probably wasn't added via this admin site." +msgstr "Šim objektam nav izmaiņu vēsture. Tas visdrīzāk nav pievienots izmantojot administrācijas saitu." + +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Go" +msgstr "Aiziet!" + +#: contrib/admin/templates/admin/search_form.html:10 #, python-format -msgid "Ensure this value is greater than or equal to %s." -msgstr "" +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "" +msgstr[1] "" -#: newforms/fields.py:163 -#, fuzzy -msgid "Enter a valid date." -msgstr "Ievadiet korektu faila vārdu." - -#: newforms/fields.py:190 -#, fuzzy -msgid "Enter a valid time." -msgstr "Ievadiet korektu faila vārdu." - -#: newforms/fields.py:226 -#, fuzzy -msgid "Enter a valid date/time." -msgstr "Ievadiet korektu faila vārdu." - -#: newforms/fields.py:240 -#, fuzzy -msgid "Enter a valid value." -msgstr "Ievadiet korektu faila vārdu." - -#: newforms/fields.py:269 core/validators.py:161 -msgid "Enter a valid e-mail address." -msgstr "Ievadiet korektu e-pasta adresi." - -#: newforms/fields.py:287 newforms/fields.py:309 -#, fuzzy -msgid "Enter a valid URL." -msgstr "Ievadiet korektu faila vārdu." - -#: newforms/fields.py:311 -#, fuzzy -msgid "This URL appears to be a broken link." -msgstr "URL %s ir salauzta saite." - -#: newforms/fields.py:359 -msgid "Select a valid choice. That choice is not one of the available choices." -msgstr "" - -#: newforms/fields.py:377 newforms/fields.py:453 -#, fuzzy -msgid "Enter a list of values." -msgstr "Ievadiet korektu faila vārdu." - -#: newforms/fields.py:386 +#: contrib/admin/templates/admin/search_form.html:10 #, python-format -msgid "Select a valid choice. %s is not one of the available choices." +msgid "%(full_result_count)s total" msgstr "" -#: template/defaultfilters.py:436 +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "Rādīt visu" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "Django saita administrācija" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "Django administrēšana" + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "Servera kļūda" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "Servera kļūda (500)" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "Servera kļūda (500)" + +#: contrib/admin/templates/admin/500.html:10 +msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience." +msgstr "Ir notikusi kļūda. Tas ir paziņots saita administratoriem ar e-pasta starpniecību un visdrīzākajā laikā tiks izlabots. Paldies par sapratni." + +#: 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 "Kaut kas nav kārtībā ar Jūsu datubāzes instalāciju. Pārliecinieties vai attiecīgās tabulas ir izveidotas un attiecīgajam lietotājam ir tiesības lasīt datubāzi." + +#: contrib/admin/templates/admin/index.html:17 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "Modeļi, kas pieejami %(name)s aplikācijā." + +#: 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 "Pievienot" + +#: contrib/admin/templates/admin/index.html:34 +msgid "Change" +msgstr "Izmainīt" + +#: contrib/admin/templates/admin/index.html:44 +msgid "You don't have permission to edit anything." +msgstr "Jums nav tiesības jebko labot." + +#: contrib/admin/templates/admin/index.html:52 +msgid "Recent Actions" +msgstr "Nesenās darbības" + +#: contrib/admin/templates/admin/index.html:53 +msgid "My Actions" +msgstr "Manas darbības" + +#: contrib/admin/templates/admin/index.html:57 +msgid "None available" +msgstr "Nav pieejams" + +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "Lapa nav atrasta" + +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "Mēs atvainojamies, bet pieprasītā lapa nevar tikt atrasta." + +#: contrib/admin/templates/admin/filters.html:4 +msgid "Filter" +msgstr "Filtrs" + +#: contrib/admin/templates/admin/change_form.html:22 +msgid "View on site" +msgstr "Apskatīt saitā" + +#: 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ūdzu izlabojiet kļūdu zemāk" +msgstr[1] "Lūdzu izlabojiet kļūdas zemāk" + +#: contrib/admin/templates/admin/change_form.html:50 +msgid "Ordering" +msgstr "Sakārtošana" + +#: contrib/admin/templates/admin/change_form.html:53 +msgid "Order:" +msgstr "Sakārtojums:" + +#: contrib/admin/templates/admin/delete_confirmation.html:9 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Delete" +msgstr "Dzēst" + +#: 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 "Izdzēšot objektu %(object_name)s '%(escaped_object)s' tiks dzēsti visi saistītie objekti , bet Jums nav tiesību dzēst sekojošus objektu tipus:" + +#: 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 "Vai esat pārliecināts, ka vēlaties dzēst %(object_name)s \"%(escaped_object)s\"? Tiks dzēsti asrī sekojoši saistītie objekti:" + +#: contrib/admin/templates/admin/delete_confirmation.html:26 +msgid "Yes, I'm sure" +msgstr "Jā, es esmu pārliecināts" + +#: contrib/admin/templates/admin/base.html:25 +msgid "Welcome," +msgstr "Sveicināti," + +#: contrib/admin/templates/admin/submit_line.html:4 +msgid "Save as new" +msgstr "Saglabāt kā jaunu" + +#: contrib/admin/templates/admin/submit_line.html:5 +msgid "Save and add another" +msgstr "Saglabāt un pievienot vēl vienu" + +#: contrib/admin/templates/admin/submit_line.html:6 +msgid "Save and continue editing" +msgstr "Saglabāt un turpināt labošanu" + +#: contrib/admin/templates/admin/submit_line.html:7 +msgid "Save" +msgstr "Saglabāt" + +#: contrib/admin/templates/admin/auth/user/change_password.html:28 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "Ievadiet jaunu paroli lietotājam %(username)s." + +#: contrib/admin/templates/admin/auth/user/change_password.html:34 +#: contrib/admin/templates/admin/auth/user/add_form.html:18 +msgid "Password" +msgstr "Parole" + +#: contrib/admin/templates/admin/auth/user/change_password.html:39 +#: contrib/admin/templates/admin/auth/user/add_form.html:23 +msgid "Password (again)" +msgstr "Parole (vēlreiz)" + +#: 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 "Ievadot tādu pašu paroli, kā augstāk, pārbaudei." + +#: 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 "Lietotāja vārds" + +#: 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 "Paroles maiņa" + +#: contrib/admin/templates/registration/password_change_done.html:6 +#: contrib/admin/templates/registration/password_change_done.html:10 +msgid "Password change successful" +msgstr "Paroles nomaiņa sekmīga" + +#: contrib/admin/templates/registration/password_change_done.html:12 +msgid "Your password was changed." +msgstr "Jūsu parole ir nomainīta." + +#: 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 "Paroles pārstatīšana(reset)" + +#: 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 "Esat aizmirsuši savu paroli? Ievadiet e-pasta adresi zemāk un mēs pārstatīsim Jūsu paroli un aizsūtīsim jaunu pa e-pastu." + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "E-pasta adrese:" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "Paroles pārstatīšana" + +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Paldies par pavadīto laiku māja lapā." + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "Pieslēgties vēlreiz" + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "Paroles pārstatīšana sekmīga" + +#: 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 "Mēs aizsūtījām pa e-pastu jaunu paroli, ko Jūs esat apstiprinājis. Jūs to drīzumā saņemsiet." + +#: 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 "Drošības nolūkos ievadiet veco paroli un pēc tam ievadiet Jūsu jauno paroli divreiz lai mēs varētu pārbaudīt, vai tā ir uzrakstīta pareizi." + +#: contrib/admin/templates/registration/password_change_form.html:17 +msgid "Old password:" +msgstr "Vecā parole:" + +#: contrib/admin/templates/registration/password_change_form.html:19 +msgid "New password:" +msgstr "Jaunā parole:" + +#: contrib/admin/templates/registration/password_change_form.html:21 +msgid "Confirm password:" +msgstr "Apstiprināt paroli:" + +#: contrib/admin/templates/registration/password_change_form.html:23 +msgid "Change my password" +msgstr "Nomainīt manu paroli" + +#: contrib/admin/templates/registration/password_reset_email.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "Jūs esat saņēmuši šo e-pastu sakarā ar Jūsu pieprasīto paroles pārstatīšanu" + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "Jūsu lietotāja kontam %(site_name)s saitā" + +#: contrib/admin/templates/registration/password_reset_email.html:5 +#, python-format +msgid "Your new password is: %(new_password)s" +msgstr "Jūsu jaunais parole ir: %(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 "Jūs vienmēr varat nomainīt šo paroli aizejot uz šo lapu:" + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Your username, in case you've forgotten:" +msgstr "Jūsu lietotājvārds, ja gadījumā Jūs esat to aizmirsis:" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +msgid "Thanks for using our site!" +msgstr "Paldies par mūsu saita lietošanu!" + +#: contrib/admin/templates/registration/password_reset_email.html:15 +#, python-format +msgid "The %(site_name)s team" +msgstr "%(site_name)s komanda" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Bookmarklets" +msgstr "Grāmatzīmes" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:5 +msgid "Documentation bookmarklets" +msgstr "Dokumentācijas grāmatzīmes" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:9 +msgid "" +"\n" +"

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

                      \n" +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:19 +msgid "Documentation for this page" +msgstr "Dokumentācija šai lapai" + +#: 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 "Pārvieto jūs no jebkuras lapas dokumentācijā uz skatu, kas ģenerē šo lapu." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:22 +msgid "Show object ID" +msgstr "Parādīt objekta ID" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:23 +msgid "Shows the content-type and unique ID for pages that represent a single object." +msgstr "Parāda content-type un unikālo ID lapām, kas atspoguļo vientuļu objektu." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:25 +msgid "Edit this object (current window)" +msgstr "Labot šo objektu (patreizējā logā)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:26 +msgid "Jumps to the admin page for pages that represent a single object." +msgstr "Pāriet uz admininstrācijas lapu tām lapām, kas atspoguļo vientuļu objektu." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:28 +msgid "Edit this object (new window)" +msgstr "Labot šo lapu (jaunā logā)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:29 +msgid "As above, but opens the admin page in a new window." +msgstr "Tāpat kā iepriekš, tikai atver administrācijas lapu jaunā logā." + +#: contrib/contenttypes/models.py:36 +msgid "python model class name" +msgstr "python modeļa klases nosaukums" + +#: contrib/contenttypes/models.py:39 +msgid "content type" +msgstr "satura tips" + +#: contrib/contenttypes/models.py:40 +msgid "content types" +msgstr "satura tips" + +#: contrib/auth/views.py:40 +msgid "Logged out" +msgstr "Izlogojies" + +#: contrib/auth/models.py:44 +#: contrib/auth/models.py:64 +msgid "name" +msgstr "nosaukums" + +#: contrib/auth/models.py:46 +msgid "codename" +msgstr "kods" + +#: contrib/auth/models.py:49 +msgid "permission" +msgstr "tiesība" + +#: contrib/auth/models.py:50 +#: contrib/auth/models.py:65 +msgid "permissions" +msgstr "tiesības" + +#: contrib/auth/models.py:68 +msgid "group" +msgstr "grupa" + +#: contrib/auth/models.py:69 +#: contrib/auth/models.py:109 +msgid "groups" +msgstr "grupas" + +#: contrib/auth/models.py:99 +msgid "username" +msgstr "lietotāja vārds" + +#: contrib/auth/models.py:99 +msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)." +msgstr "" + +#: contrib/auth/models.py:100 +msgid "first name" +msgstr "vārds" + +#: contrib/auth/models.py:101 +msgid "last name" +msgstr "uzvārds" + +#: contrib/auth/models.py:102 +msgid "e-mail address" +msgstr "e-pasta adrese" + +#: contrib/auth/models.py:103 +msgid "password" +msgstr "parole" + +#: contrib/auth/models.py:103 +msgid "Use '[algo]$[salt]$[hexdigest]' or use the change password form." +msgstr "" + +#: contrib/auth/models.py:104 +msgid "staff status" +msgstr "personāla statuss" + +#: contrib/auth/models.py:104 +msgid "Designates whether the user can log into this admin site." +msgstr "Atzīmējiet, ja vēlaties, lai lietotājs var pieslēgties administrācijas lapā." + +#: contrib/auth/models.py:105 +msgid "active" +msgstr "aktīvs" + +#: contrib/auth/models.py:105 +msgid "Designates whether this user can log into the Django admin. Unselect this instead of deleting accounts." +msgstr "Nosaka, ka lietotājs var pieslēgties Django administrācijas lapai. Ieteicams atcelt šo izvēli nevis dzēst lietotājus." + +#: contrib/auth/models.py:106 +msgid "superuser status" +msgstr "superlietotāja statuss" + +#: contrib/auth/models.py:106 +msgid "Designates that this user has all permissions without explicitly assigning them." +msgstr "" + +#: contrib/auth/models.py:107 +msgid "last login" +msgstr "pēdējoreiz pieslēdzies" + +#: contrib/auth/models.py:108 +msgid "date joined" +msgstr "datums, kad pievienojies" + +#: contrib/auth/models.py:110 +msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in." +msgstr "Papildus manuāli piešķirtajām atļaujām, šis lietotājs papildus iegūs visas atļaujas, kas piešķirtas grupām, kurās lietotājs atrodas." + +#: contrib/auth/models.py:111 +msgid "user permissions" +msgstr "lietotāja atļaujas" + +#: contrib/auth/models.py:115 +msgid "user" +msgstr "lietotājs" + +#: contrib/auth/models.py:116 +msgid "users" +msgstr "lietotāji" + +#: contrib/auth/models.py:122 +msgid "Personal info" +msgstr "Personīgā informācija" + +#: contrib/auth/models.py:123 +msgid "Permissions" +msgstr "Atļaujas" + +#: contrib/auth/models.py:124 +msgid "Important dates" +msgstr "Svarīgi datumi" + +#: contrib/auth/models.py:125 +msgid "Groups" +msgstr "Grupas" + +#: contrib/auth/models.py:269 +msgid "message" +msgstr "ziņojums" + +#: contrib/auth/models.py:282 +msgid "AnonymousUser" +msgstr "Anonīms lietotājs" + +#: contrib/auth/forms.py:17 +#: contrib/auth/forms.py:138 +msgid "The two password fields didn't match." +msgstr "" + +#: contrib/auth/forms.py:25 +msgid "A user with that username already exists." +msgstr "Lietotājs ar šādu lietotāja vārdu jau eksistē." + +#: contrib/auth/forms.py:53 +msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in." +msgstr "Izskatās, ka Jūsu pārlūks neatbalsta cookies. Cookies ir obligātas, lai pieslēgtos." + +#: contrib/auth/forms.py:62 +msgid "This account is inactive." +msgstr "Šis konts ir neaktīvs." + +#: contrib/auth/forms.py:85 +msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?" +msgstr "" + +#: contrib/auth/forms.py:117 +msgid "The two 'new password' fields didn't match." +msgstr "Abi \"Jaunā parole\" lauki nesakrīt." + +#: contrib/auth/forms.py:124 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "Jūsu iepriekšējā parole tika ievadīta nekorekti. Lūdzu ievadiet to atkārtoti." + +#: contrib/localflavor/uk/forms.py:18 +msgid "Enter a postcode. A space is required between the two postcode parts." +msgstr "Ievadiet pasta indeksu. Atstarpe ir nepieciešama starp abām pasta indeksa daļām." + +#: contrib/localflavor/br/forms.py:18 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "Ievadiet pasta indeksu XXXXX-XXX formātā." + +#: contrib/localflavor/br/forms.py:30 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "Telefona numuriem jābūt XXX-XXXX-XXXX formātā." + +#: contrib/localflavor/br/forms.py:72 +msgid "This field requires only numbers." +msgstr "Šis lauks drīkst saturēt tikai skaitļus." + +#: contrib/localflavor/br/forms.py:74 +msgid "This field requires at most 11 digits or 14 characters." +msgstr "Šī lauka vērtībai jabūt vismaz 11 cipariem vai 14 simboliem." + +#: contrib/localflavor/br/forms.py:84 +msgid "Invalid CPF number." +msgstr "" + +#: contrib/localflavor/br/forms.py:106 +msgid "This field requires at least 14 digits" +msgstr "Šim laukam jasastāv vismaz no 14 cipariem." + +#: contrib/localflavor/br/forms.py:116 +msgid "Invalid CNPJ number." +msgstr "" + +#: contrib/localflavor/au/forms.py:18 +msgid "Enter a 4 digit post code." +msgstr "Ievadiet pasta indeksu, kurš sastāv no 4 cipariem." + +#: contrib/localflavor/fr/forms.py:17 +#: contrib/localflavor/de/forms.py:16 +#: contrib/localflavor/fi/forms.py:14 +msgid "Enter a zip code in the format XXXXX." +msgstr "Ievadiet pasta indeksu formātā XXXXX." + +#: contrib/localflavor/us/forms.py:18 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "" + +#: contrib/localflavor/us/forms.py:51 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "" + +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "" + +#: contrib/localflavor/de/de_states.py:7 +msgid "Berlin" +msgstr "" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "Hamburga" + +#: contrib/localflavor/de/de_states.py:11 +#, fuzzy +msgid "Hessen" +msgstr "sesija" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "" + +#: contrib/localflavor/de/forms.py:60 +msgid "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format." +msgstr "Ievadiet korektu vāciešu identifikācijas nummuru XXXXXXXXXXX-XXXXXXX-XXXXXXX-X formātā." + +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:6 +#, fuzzy +msgid "Iwate" +msgstr "Datums:" + +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:16 +msgid "Tokyo" +msgstr "Tokija" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +#, fuzzy +msgid "Shimane" +msgstr "Izmainīt" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +msgid "Kagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +#, fuzzy +msgid "Ehime" +msgstr "Laiks" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" +msgstr "Okinava" + +#: contrib/localflavor/jp/forms.py:21 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "Ievadiet pasta indeksu XXXXXXX vai XXX-XXXX formātā." + +#: contrib/localflavor/ch/ch_states.py:5 +msgid "Aargau" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:6 +msgid "Appenzell Innerrhoden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:7 +msgid "Appenzell Ausserrhoden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:8 +msgid "Basel-Stadt" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:9 +msgid "Basel-Land" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:10 +#, fuzzy +msgid "Berne" +msgstr "lietotāja vārds" + +#: contrib/localflavor/ch/ch_states.py:11 +msgid "Fribourg" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:12 +msgid "Geneva" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:13 +#, fuzzy +msgid "Glarus" +msgstr "Grupas" + +#: contrib/localflavor/ch/ch_states.py:14 +msgid "Graubuenden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:15 +msgid "Jura" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:16 +#, fuzzy +msgid "Lucerne" +msgstr "lietotāja vārds" + +#: contrib/localflavor/ch/ch_states.py:17 +msgid "Neuchatel" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:18 +msgid "Nidwalden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:19 +msgid "Obwalden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:20 +msgid "Schaffhausen" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:21 +msgid "Schwyz" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:22 +msgid "Solothurn" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:23 +msgid "St. Gallen" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:24 +#, fuzzy +msgid "Thurgau" +msgstr "Ceturdiena" + +#: contrib/localflavor/ch/ch_states.py:25 +msgid "Ticino" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:26 +msgid "Uri" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:27 +msgid "Valais" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:28 +msgid "Vaud" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:29 +#, fuzzy +msgid "Zug" +msgstr "aug" + +#: contrib/localflavor/ch/ch_states.py:30 +msgid "Zurich" +msgstr "" + +#: contrib/localflavor/ch/forms.py:18 +#: contrib/localflavor/no/forms.py:15 +msgid "Enter a zip code in the format XXXX." +msgstr "Ievadiet pasta indeksu formātā XXXX." + +#: contrib/localflavor/ch/forms.py:90 +msgid "Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format." +msgstr "Lūdzu ievadiet korektu šveiciešu identifikācijas vai pases nummuru X1234567<0 vai 1234567890 formātā." + +#: contrib/localflavor/is_/forms.py:16 +msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "Lūdzu ievadiet korektu islandiešu identifikācijas nummuru XXXXXX-XXXX formātā." + +#: contrib/localflavor/is_/forms.py:30 +msgid "The Icelandic identification number is not valid." +msgstr "Islandiešu identifikācijas nummurs nav korekts." + +#: contrib/localflavor/it/forms.py:16 +msgid "Enter a valid zip code." +msgstr "Ievadiet korektu pasta indeksu." + +#: contrib/localflavor/it/forms.py:41 +msgid "Enter a valid Social Security number." +msgstr "Ievadiet korektu sociālās drošības nummuru." + +#: contrib/localflavor/it/forms.py:68 +msgid "Enter a valid VAT number." +msgstr "Ievadiet korektu VAT nummuru." + +#: contrib/localflavor/no/forms.py:36 +msgid "Enter a valid Norwegian social security number." +msgstr "Lūdzu ievadiet korektu norvēģu sociālās drošības nummuru." + +#: contrib/localflavor/cl/forms.py:21 +msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "Ievadiet korektu čīliešu RUT XX.XXX.XXX-X formātā." + +#: contrib/localflavor/cl/forms.py:26 +msgid "Enter valid a Chilean RUT" +msgstr "Ievadiet korektu čīliešu RUT" + +#: contrib/localflavor/fi/forms.py:40 +#: contrib/localflavor/fi/forms.py:45 +msgid "Enter a valid Finnish social security number." +msgstr "Ievadiet korektu somu sociālās drošības nummuru." + +#: contrib/sessions/models.py:68 +msgid "session key" +msgstr "sesijas atslēga" + +#: contrib/sessions/models.py:69 +msgid "session data" +msgstr "sesijas dati" + +#: contrib/sessions/models.py:70 +msgid "expire date" +msgstr "beigu datums" + +#: contrib/sessions/models.py:74 +msgid "session" +msgstr "sesija" + +#: contrib/sessions/models.py:75 +msgid "sessions" +msgstr "sesijas" + +#: contrib/flatpages/models.py:8 +msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "Piemēram: '/about/contact/'. Pārliecinieties, ka esat ievietojuši sākuma un beigu slīpsvītras." + +#: contrib/flatpages/models.py:9 +msgid "title" +msgstr "virsraksts" + +#: contrib/flatpages/models.py:10 +msgid "content" +msgstr "saturs" + +#: contrib/flatpages/models.py:11 +msgid "enable comments" +msgstr "ieslēgt komentārus" + +#: contrib/flatpages/models.py:12 +msgid "template name" +msgstr "šablona nosaukums" + +#: contrib/flatpages/models.py:13 +msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'." +msgstr "Piemēram: 'flatpages/contact_page.html'. Ja tas nav norādīts, sistēma lietos 'flatpages/default.html'." + +#: contrib/flatpages/models.py:14 +msgid "registration required" +msgstr "reģistrācija obligāta" + +#: contrib/flatpages/models.py:14 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "Ja tas ir atzīmēts, tikai lietotāji, kas ir pieslēgušies sistēmās redzēs šo lapu." + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "vienkārša lapa" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "vienkāršas lapas" + +#: utils/dates.py:6 +msgid "Monday" +msgstr "Pirmdiena" + +#: utils/dates.py:6 +msgid "Tuesday" +msgstr "Otrdiena" + +#: utils/dates.py:6 +msgid "Wednesday" +msgstr "Trešdiena" + +#: utils/dates.py:6 +msgid "Thursday" +msgstr "Ceturdiena" + +#: utils/dates.py:6 +msgid "Friday" +msgstr "Piektdiena" + +#: utils/dates.py:7 +msgid "Saturday" +msgstr "Sestdiena" + +#: utils/dates.py:7 +msgid "Sunday" +msgstr "Svētdiena" + +#: utils/dates.py:14 +msgid "January" +msgstr "Janvāris" + +#: utils/dates.py:14 +msgid "February" +msgstr "Februāris" + +#: utils/dates.py:14 +#: utils/dates.py:27 +msgid "March" +msgstr "Marts" + +#: utils/dates.py:14 +#: utils/dates.py:27 +msgid "April" +msgstr "Aprīlis" + +#: utils/dates.py:14 +#: utils/dates.py:27 +msgid "May" +msgstr "Maijs" + +#: utils/dates.py:14 +#: utils/dates.py:27 +msgid "June" +msgstr "Jūnijs" + +#: utils/dates.py:15 +#: utils/dates.py:27 +msgid "July" +msgstr "Jūlijs" + +#: utils/dates.py:15 +msgid "August" +msgstr "Augusts" + +#: utils/dates.py:15 +msgid "September" +msgstr "Septembris" + +#: utils/dates.py:15 +msgid "October" +msgstr "Oktobris" + +#: utils/dates.py:15 +msgid "November" +msgstr "Novembris" + +#: utils/dates.py:16 +msgid "December" +msgstr "Decembris" + +#: utils/dates.py:19 +msgid "jan" +msgstr "jan" + +#: utils/dates.py:19 +msgid "feb" +msgstr "feb" + +#: utils/dates.py:19 +msgid "mar" +msgstr "mar" + +#: utils/dates.py:19 +msgid "apr" +msgstr "apr" + +#: utils/dates.py:19 +msgid "may" +msgstr "mai" + +#: utils/dates.py:19 +msgid "jun" +msgstr "jūn" + +#: utils/dates.py:20 +msgid "jul" +msgstr "jūl" + +#: utils/dates.py:20 +msgid "aug" +msgstr "aug" + +#: utils/dates.py:20 +msgid "sep" +msgstr "sep" + +#: utils/dates.py:20 +msgid "oct" +msgstr "okt" + +#: utils/dates.py:20 +msgid "nov" +msgstr "nov" + +#: utils/dates.py:20 +msgid "dec" +msgstr "dec" + +#: utils/dates.py:27 +msgid "Jan." +msgstr "Jan." + +#: utils/dates.py:27 +msgid "Feb." +msgstr "Feb." + +#: utils/dates.py:28 +msgid "Aug." +msgstr "Aug." + +#: utils/dates.py:28 +msgid "Sept." +msgstr "Sept." + +#: utils/dates.py:28 +msgid "Oct." +msgstr "Okt." + +#: utils/dates.py:28 +msgid "Nov." +msgstr "Nov." + +#: utils/dates.py:28 +msgid "Dec." +msgstr "Dec." + +#: utils/timesince.py:12 +msgid "year" +msgid_plural "years" +msgstr[0] "gads" +msgstr[1] "gadi" + +#: utils/timesince.py:13 +msgid "month" +msgid_plural "months" +msgstr[0] "mēnesis" +msgstr[1] "mēneši" + +#: utils/timesince.py:14 +msgid "week" +msgid_plural "weeks" +msgstr[0] "nedēļa" +msgstr[1] "nedēļas" + +#: utils/timesince.py:15 +msgid "day" +msgid_plural "days" +msgstr[0] "diena" +msgstr[1] "dienas" + +#: utils/timesince.py:16 +msgid "hour" +msgid_plural "hours" +msgstr[0] "stunda" +msgstr[1] "stundas" + +#: utils/timesince.py:17 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "minūte" +msgstr[1] "minūtes" + +#: utils/timesince.py:40 +#, python-format +msgid "%d milliseconds" +msgstr "%d millisekundes" + +#: utils/timesince.py:41 +#, python-format +msgid "%(number)d %(type)s" +msgstr "%(number)d %(type)s" + +#: utils/timesince.py:47 +#, python-format +msgid ", %(number)d %(type)s" +msgstr ", %(number)d %(type)s" + +#: utils/dateformat.py:40 +#, fuzzy +msgid "p.m." +msgstr "p.m." + +#: utils/dateformat.py:41 +#, fuzzy +msgid "a.m." +msgstr "a.m." + +#: utils/dateformat.py:46 +#, fuzzy +msgid "PM" +msgstr "PM" + +#: utils/dateformat.py:47 +#, fuzzy +msgid "AM" +msgstr "AM" + +#: utils/dateformat.py:95 +msgid "midnight" +msgstr "pusnakts" + +#: utils/dateformat.py:97 +msgid "noon" +msgstr "dienas vidus" + +#: utils/translation/trans_real.py:358 +msgid "DATE_FORMAT" +msgstr "DATE_FORMAT" + +#: utils/translation/trans_real.py:359 +msgid "DATETIME_FORMAT" +msgstr "DATETIME_FORMAT" + +#: utils/translation/trans_real.py:360 +msgid "TIME_FORMAT" +msgstr "TIME_FORMAT" + +#: utils/translation/trans_real.py:376 +msgid "YEAR_MONTH_FORMAT" +msgstr "YEAR_MONTH_FORMAT" + +#: utils/translation/trans_real.py:377 +msgid "MONTH_DAY_FORMAT" +msgstr "MONTH_DAY_FORMAT" + +#: template/defaultfilters.py:491 msgid "yes,no,maybe" msgstr "jā,nē,varbūt" -#: views/generic/create_update.py:43 -#, fuzzy, python-format -msgid "The %(verbose_name)s was created successfully." -msgstr "%(name)s \"%(obj)s\" nomainīts sekmīgi." - -#: views/generic/create_update.py:117 -#, fuzzy, python-format -msgid "The %(verbose_name)s was updated successfully." -msgstr "%(name)s \"%(obj)s\" sekmīgi izdzēsts." - -#: views/generic/create_update.py:184 -#, fuzzy, python-format -msgid "The %(verbose_name)s was deleted." -msgstr "%(site_name)s komanda" - -#: core/validators.py:64 -msgid "This value must contain only letters, numbers and underscores." -msgstr "Šī vērtība var saturēt tikai burtus, numurus un apakšsvītras." - -#: core/validators.py:68 -msgid "" -"This value must contain only letters, numbers, underscores, dashes or " -"slashes." -msgstr "" -"Šī vērtība var saturēt tikai burtus, numurus un apakšsvītras, svītras vai " -"šķērssvītras." - -#: core/validators.py:72 -#, fuzzy -msgid "This value must contain only letters, numbers, underscores or hyphens." -msgstr "" -"Šī vērtība var saturēt tikai burtus, numurus un apakšsvītras, svītras vai " -"šķērssvītras." - -#: core/validators.py:76 -msgid "Uppercase letters are not allowed here." -msgstr "Augšējā reģistra burti nav atļauti." - -#: core/validators.py:80 -msgid "Lowercase letters are not allowed here." -msgstr "Apakšējā reģistra burti nav atļauti." - -#: core/validators.py:87 -msgid "Enter only digits separated by commas." -msgstr "Ievadiet tikai numurus, kas atdalīti ar komatiem." - -#: core/validators.py:99 -msgid "Enter valid e-mail addresses separated by commas." -msgstr "Ievadiet korektas e-pasta adreses, kas atdalītas ar komatiem." - -#: core/validators.py:103 -msgid "Please enter a valid IP address." -msgstr "Lūdzu ievadiet korektu IP adresi." - -#: core/validators.py:107 -msgid "Empty values are not allowed here." -msgstr "Tukšas vērtības nav atļautas." - -#: core/validators.py:111 -msgid "Non-numeric characters aren't allowed here." -msgstr "Ne ciparu simboli nav atļauti." - -#: core/validators.py:115 -msgid "This value can't be comprised solely of digits." -msgstr "Šī vērtība nevar saturēt tikai ciparus." - -#: core/validators.py:124 -msgid "Only alphabetical characters are allowed here." -msgstr "Atļauti tikai alfabētiskie simboli." - -#: core/validators.py:139 -msgid "Year must be 1900 or later." -msgstr "" - -#: core/validators.py:143 -#, fuzzy, python-format -msgid "Invalid date: %s." -msgstr "Nekorekts URL: %s" - -#: core/validators.py:152 -msgid "Enter a valid time in HH:MM format." -msgstr "Ievadiet korektu laiku HH:MM formātā" - -#: core/validators.py:177 -msgid "" -"Upload a valid image. The file you uploaded was either not an image or a " -"corrupted image." -msgstr "" -"Augšupielādējiet korektu attēlu. Fails, ko Jūs augšupielādējāt nav attēls " -"vai arī bojāts attēla fails." - -#: core/validators.py:184 +#: template/defaultfilters.py:520 #, python-format -msgid "The URL %s does not point to a valid image." -msgstr "URL %s nesatur korektu attēlu." - -#: core/validators.py:188 -#, python-format -msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." -msgstr "Telefona numuriem jābūt XXX-XXX-XXXX formātā. \"%s\" is nekorekts." - -#: core/validators.py:196 -#, python-format -msgid "The URL %s does not point to a valid QuickTime video." -msgstr "URL %s nenorāda uz korektu QuickTime video." - -#: core/validators.py:200 -msgid "A valid URL is required." -msgstr "Reāls URL obligāts." - -#: core/validators.py:214 -#, python-format -msgid "" -"Valid HTML is required. Specific errors are:\n" -"%s" -msgstr "" -"Korekts HTML ir obligāts. Specifiskās kļūdas:\n" -"%s" - -#: core/validators.py:221 -#, python-format -msgid "Badly formed XML: %s" -msgstr "Slikti formēts XML: %s" - -#: core/validators.py:238 -#, python-format -msgid "Invalid URL: %s" -msgstr "Nekorekts URL: %s" - -#: core/validators.py:243 core/validators.py:245 -#, python-format -msgid "The URL %s is a broken link." -msgstr "URL %s ir salauzta saite." - -#: core/validators.py:251 -msgid "Enter a valid U.S. state abbreviation." -msgstr "Ievadiet korektu ASV štata abriviatūru." - -#: core/validators.py:265 -#, 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] "Seko saviem vārdiem! Vārds %s nav atļauts šeit." -msgstr[1] "Seko saviem vārdiem! Vārdi %s nav atļauts šeit." - -#: core/validators.py:272 -#, python-format -msgid "This field must match the '%s' field." -msgstr "Laukam jāsaskan ar %s lauku." - -#: core/validators.py:291 -msgid "Please enter something for at least one field." -msgstr "Lūdzu ievadiet kaut ko vismaz vienā laukā." - -#: core/validators.py:300 core/validators.py:311 -msgid "Please enter both fields or leave them both empty." -msgstr "Lūdzu ievadiet abus laukus vai atstājiet abus tukšus." - -#: core/validators.py:318 -#, python-format -msgid "This field must be given if %(field)s is %(value)s" -msgstr "Šis lauks ir jāaizpilda, ja %(field)s ir vienāds %(value)s" - -#: core/validators.py:330 -#, python-format -msgid "This field must be given if %(field)s is not %(value)s" -msgstr "Šis lauks ir jāaizpilda, ja %(field)s nav vienāds %(value)s" - -#: core/validators.py:349 -msgid "Duplicate values are not allowed." -msgstr "Duplicētas vērtības nav atļautas." - -#: core/validators.py:364 -#, fuzzy, python-format -msgid "This value must be between %s and %s." -msgstr "Šai vērtībai jābūt %s pakāpei." - -#: core/validators.py:366 -#, fuzzy, python-format -msgid "This value must be at least %s." -msgstr "Šai vērtībai jābūt %s pakāpei." - -#: core/validators.py:368 -#, fuzzy, python-format -msgid "This value must be no more than %s." -msgstr "Šai vērtībai jābūt %s pakāpei." - -#: core/validators.py:404 -#, python-format -msgid "This value must be a power of %s." -msgstr "Šai vērtībai jābūt %s pakāpei." - -#: core/validators.py:415 -msgid "Please enter a valid decimal number." -msgstr "Lūdzu ievadiet korektu decimālu numuru." - -#: core/validators.py:419 -#, 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 "%(size)d byte" +msgid_plural "%(size)d bytes" msgstr[0] "" -"Lūdzu ievadiet korektu decimālu numuru ar maksimālu ciparu skaitu %s." msgstr[1] "" -"Lūdzu ievadiet korektu decimālu numuru ar maksimālu ciparu skaitu %s." -#: core/validators.py:422 -#, fuzzy, 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] "" -"Lūdzu ievadiet korektu decimālu numuru ar maksimālu ciparu skaitu %s." -msgstr[1] "" -"Lūdzu ievadiet korektu decimālu numuru ar maksimālu ciparu skaitu %s." - -#: core/validators.py:425 +#: template/defaultfilters.py:522 #, 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ūdzu ievadiet korektu decimālu numuru ar maksimālu ciparu skaitu aiz komata " -"%s." -msgstr[1] "" -"Lūdzu ievadiet korektu decimālu numuru ar maksimālu ciparu skaitu aiz komata " -"%s." +msgid "%.1f KB" +msgstr "%.1f KB" -#: core/validators.py:435 +#: template/defaultfilters.py:524 #, python-format -msgid "Make sure your uploaded file is at least %s bytes big." -msgstr "" -"Pārliecinieties, ka jūsu augšupielādētais fails ir vismaz %s baiti liels." +msgid "%.1f MB" +msgstr "%.1f MB" -#: core/validators.py:436 +#: template/defaultfilters.py:525 #, python-format -msgid "Make sure your uploaded file is at most %s bytes big." -msgstr "" -"Pārliecinieties, ka jūsu augšupielādētais fails ir maksimums %s baiti liels." +msgid "%.1f GB" +msgstr "%.1f GB" -#: core/validators.py:453 -msgid "The format for this field is wrong." -msgstr "Šī faila formāts ir nekorekts." - -#: core/validators.py:468 -msgid "This field is invalid." -msgstr "Šis lauks ir nekorekts." - -#: core/validators.py:504 -#, python-format -msgid "Could not retrieve anything from %s." -msgstr "Nevar neko no %s" - -#: core/validators.py:507 -#, python-format -msgid "" -"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." -msgstr "URL %(url)s atgrieza nekorektu Content-Type headeri '%(contenttype)s'." - -#: core/validators.py:540 -#, python-format -msgid "" -"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " -"\"%(start)s\".)" -msgstr "" -"Lūdzu aiztaisiet neaiztaisīto %(tag)s tagu no rindas nr %(line)s. (Rinda " -"sākas ar \"%(start)s\".)" - -#: core/validators.py:544 -#, 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:549 -#, python-format -msgid "" -"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" -"(start)s\".)" -msgstr "" - -#: core/validators.py:554 -#, python-format -msgid "" -"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" -"(start)s\".)" -msgstr "" - -#: core/validators.py:558 -#, 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:563 -#, python-format -msgid "" -"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " -"starts with \"%(start)s\".)" -msgstr "" - -#~ msgid "Use '[algo]$[salt]$[hexdigest]'" -#~ msgstr "Lietojiet '[algo]$[salt]$[hexdigest]'" - -#~ msgid "Have you forgotten your password?" -#~ msgstr "Vai esat aizmirsis paroli?" diff --git a/django/conf/locale/lv/LC_MESSAGES/djangojs.mo b/django/conf/locale/lv/LC_MESSAGES/djangojs.mo index b81550aedb..1835996a67 100644 Binary files a/django/conf/locale/lv/LC_MESSAGES/djangojs.mo and b/django/conf/locale/lv/LC_MESSAGES/djangojs.mo differ diff --git a/django/conf/locale/lv/LC_MESSAGES/djangojs.po b/django/conf/locale/lv/LC_MESSAGES/djangojs.po index 534cffd8d0..4c904ab068 100644 --- a/django/conf/locale/lv/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/lv/LC_MESSAGES/djangojs.po @@ -10,7 +10,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-02-15 10:46+1100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"Last-Translator: Gatis Tomsons \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" @@ -19,64 +19,65 @@ msgstr "" #: contrib/admin/media/js/SelectFilter2.js:33 #, perl-format msgid "Available %s" -msgstr "" +msgstr "Pieejams %s" #: contrib/admin/media/js/SelectFilter2.js:41 msgid "Choose all" -msgstr "" +msgstr "Izvēlēties visu" #: contrib/admin/media/js/SelectFilter2.js:46 msgid "Add" -msgstr "" +msgstr "Pievienot" #: contrib/admin/media/js/SelectFilter2.js:48 msgid "Remove" -msgstr "" +msgstr "Izņemt" #: contrib/admin/media/js/SelectFilter2.js:53 #, perl-format msgid "Chosen %s" -msgstr "" +msgstr "Izvēlies %s" #: contrib/admin/media/js/SelectFilter2.js:54 msgid "Select your choice(s) and click " -msgstr "" +msgstr "Izvēlies un klikšķini" #: contrib/admin/media/js/SelectFilter2.js:59 msgid "Clear all" -msgstr "" +msgstr "Attīrīt visu" #: contrib/admin/media/js/dateparse.js:32 #: contrib/admin/media/js/calendar.js:24 msgid "" "January February March April May June July August September October November " "December" -msgstr "" +msgstr "Janvāris Februāris Marts Aprīlis Maijs Jūnijs Jūlijs Augusts Septembris Oktobris Novembris" +"Decembris" #: contrib/admin/media/js/dateparse.js:33 msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" -msgstr "" +msgstr "Svētdiena Pirmdiena Otrdiena Trešdiena Ceturtdiena Piektdiena Sestdiena" #: contrib/admin/media/js/calendar.js:25 msgid "S M T W T F S" -msgstr "" +msgstr "S M T W T F S" #: contrib/admin/media/js/admin/DateTimeShortcuts.js:47 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 msgid "Now" -msgstr "" +msgstr "Tagad" #: contrib/admin/media/js/admin/DateTimeShortcuts.js:51 msgid "Clock" -msgstr "" +msgstr "Pulkstens" #: contrib/admin/media/js/admin/DateTimeShortcuts.js:78 msgid "Choose a time" -msgstr "" +msgstr "Izvēlieties laiku" #: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 msgid "Midnight" -msgstr "" +msgstr "Pusnakts" #: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 msgid "6 a.m." @@ -84,35 +85,35 @@ msgstr "" #: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 msgid "Noon" -msgstr "" +msgstr "Pusdienas laiks" #: contrib/admin/media/js/admin/DateTimeShortcuts.js:88 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:183 msgid "Cancel" -msgstr "" +msgstr "Atcelt" #: contrib/admin/media/js/admin/DateTimeShortcuts.js:128 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:177 msgid "Today" -msgstr "" +msgstr "Šodien" #: contrib/admin/media/js/admin/DateTimeShortcuts.js:132 msgid "Calendar" -msgstr "" +msgstr "Kalendārs" #: contrib/admin/media/js/admin/DateTimeShortcuts.js:175 msgid "Yesterday" -msgstr "" +msgstr "Vakar" #: contrib/admin/media/js/admin/DateTimeShortcuts.js:179 msgid "Tomorrow" -msgstr "" +msgstr "Rīt" #: contrib/admin/media/js/admin/CollapsedFieldsets.js:34 #: contrib/admin/media/js/admin/CollapsedFieldsets.js:72 msgid "Show" -msgstr "" +msgstr "Parādīt" #: contrib/admin/media/js/admin/CollapsedFieldsets.js:63 msgid "Hide" -msgstr "" +msgstr "Slēpt" diff --git a/django/conf/locale/mk/LC_MESSAGES/django.mo b/django/conf/locale/mk/LC_MESSAGES/django.mo index 5ab5aa6cbb..e67d94fae1 100644 Binary files a/django/conf/locale/mk/LC_MESSAGES/django.mo and b/django/conf/locale/mk/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/mk/LC_MESSAGES/django.po b/django/conf/locale/mk/LC_MESSAGES/django.po index f23d8ed58a..b0a9c92c08 100644 --- a/django/conf/locale/mk/LC_MESSAGES/django.po +++ b/django/conf/locale/mk/LC_MESSAGES/django.po @@ -1,26 +1,26 @@ -# translation of mk_django.po to Macedonian +# translation of django.po to Macedonian # # Georgi Stanojevski , 2006, 2007. msgid "" msgstr "" -"Project-Id-Version: mk_django\n" +"Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-02-15 10:53+1100\n" -"PO-Revision-Date: 2007-02-24 13:53+0100\n" +"POT-Creation-Date: 2007-04-07 19:51+0200\n" +"PO-Revision-Date: 2007-04-07 20:29+0200\n" "Last-Translator: Georgi Stanojevski \n" "Language-Team: Macedonian \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=2; plural=n != 1;" +"Plural-Forms: nplurals=2; plural=n != 1;\n" -#: db/models/manipulators.py:305 +#: db/models/manipulators.py:307 #, python-format msgid "%(object)s with this %(type)s already exists for the given %(field)s." msgstr "%(object)s од овој тип %(type)s веќе постои за даденото %(field)s." -#: db/models/manipulators.py:306 contrib/admin/views/main.py:335 +#: 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 "и" @@ -42,45 +42,53 @@ msgstr "Држете го „Control“ или „Command“ на Мекинто #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid." -msgstr[0] "Ве молам внесете правилен %(self)s идентификацион број. Оваа вредност %(value)r е неправилна." -msgstr[1] "Ве молам внесете правилен %(self)s идентификацион број. Вредностите %(value)r се неправилни." +msgstr[0] "" +"Ве молам внесете правилен %(self)s идентификацион број. Оваа вредност %" +"(value)r е неправилна." +msgstr[1] "" +"Ве молам внесете правилен %(self)s идентификацион број. Вредностите %(value)" +"r се неправилни." #: db/models/fields/__init__.py:42 #, python-format msgid "%(optname)s with this %(fieldname)s already exists." msgstr "%(optname)s со ова %(fieldname)s веќе постои." -#: db/models/fields/__init__.py:116 db/models/fields/__init__.py:273 -#: db/models/fields/__init__.py:605 db/models/fields/__init__.py:616 -#: oldforms/__init__.py:352 newforms/fields.py:78 newforms/fields.py:373 -#: newforms/fields.py:449 newforms/fields.py:460 +#: db/models/fields/__init__.py:117 db/models/fields/__init__.py:274 +#: db/models/fields/__init__.py:610 db/models/fields/__init__.py:621 +#: oldforms/__init__.py:357 newforms/fields.py:80 newforms/fields.py:376 +#: newforms/fields.py:452 newforms/fields.py:463 newforms/models.py:178 msgid "This field is required." msgstr "Ова поле е задолжително." -#: db/models/fields/__init__.py:366 +#: db/models/fields/__init__.py:367 msgid "This value must be an integer." msgstr "Оваа вредност мора да биде цел број." -#: db/models/fields/__init__.py:401 +#: db/models/fields/__init__.py:402 msgid "This value must be either True or False." msgstr "Оваа вредност мора да биде или точно или неточно." -#: db/models/fields/__init__.py:422 +#: db/models/fields/__init__.py:423 msgid "This field cannot be null." msgstr "Оваа вредност неможе да биде null." -#: db/models/fields/__init__.py:454 core/validators.py:147 +#: db/models/fields/__init__.py:457 core/validators.py:148 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Внесете правилен датум во форматот ГГГГ-ММ-ДД." -#: db/models/fields/__init__.py:521 core/validators.py:156 +#: db/models/fields/__init__.py:526 core/validators.py:157 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." msgstr "Внесете правилен датум/време во форматот ГГГГ-ММ-ДД ЧЧ:ММ." -#: db/models/fields/__init__.py:625 +#: db/models/fields/__init__.py:630 msgid "Enter a valid filename." msgstr "Внесите правилно име на датотека." +#: db/models/fields/__init__.py:751 +msgid "This value must be either None, True or False." +msgstr "Оваа вредност мора да биде празна, точно или неточно." + #: conf/global_settings.py:39 msgid "Arabic" msgstr "Арапски" @@ -90,172 +98,2367 @@ msgid "Bengali" msgstr "Бенгалски" #: conf/global_settings.py:41 +msgid "Catalan" +msgstr "Каталански" + +#: conf/global_settings.py:42 msgid "Czech" msgstr "Чешки" -#: conf/global_settings.py:42 +#: conf/global_settings.py:43 msgid "Welsh" msgstr "Велшки" -#: conf/global_settings.py:43 +#: conf/global_settings.py:44 msgid "Danish" msgstr "Дански" -#: conf/global_settings.py:44 +#: conf/global_settings.py:45 msgid "German" msgstr "Германски" -#: conf/global_settings.py:45 +#: conf/global_settings.py:46 msgid "Greek" msgstr "Грчки" -#: conf/global_settings.py:46 +#: conf/global_settings.py:47 msgid "English" msgstr "Англиски" -#: conf/global_settings.py:47 +#: conf/global_settings.py:48 msgid "Spanish" msgstr "Шпански" -#: conf/global_settings.py:48 +#: conf/global_settings.py:49 msgid "Argentinean Spanish" msgstr "Аргентиско шпански" -#: conf/global_settings.py:49 +#: conf/global_settings.py:50 msgid "Finnish" msgstr "Фински" -#: conf/global_settings.py:50 +#: conf/global_settings.py:51 msgid "French" msgstr "Француски" -#: conf/global_settings.py:51 +#: conf/global_settings.py:52 msgid "Galician" msgstr "Галски" -#: conf/global_settings.py:52 +#: conf/global_settings.py:53 msgid "Hungarian" msgstr "Унгарски" -#: conf/global_settings.py:53 +#: conf/global_settings.py:54 msgid "Hebrew" msgstr "Еврејски" -#: conf/global_settings.py:54 +#: conf/global_settings.py:55 msgid "Icelandic" msgstr "Исландски" -#: conf/global_settings.py:55 +#: conf/global_settings.py:56 msgid "Italian" msgstr "Италијански" -#: conf/global_settings.py:56 +#: conf/global_settings.py:57 msgid "Japanese" msgstr "Јапонски" -#: 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:58 +#: conf/global_settings.py:60 msgid "Macedonian" msgstr "Македонски" -#: conf/global_settings.py:59 +#: conf/global_settings.py:61 msgid "Dutch" msgstr "Холандски" -#: conf/global_settings.py:60 +#: conf/global_settings.py:62 msgid "Norwegian" msgstr "Норвешки" -#: conf/global_settings.py:61 +#: conf/global_settings.py:63 msgid "Polish" msgstr "Полски" -#: conf/global_settings.py:62 +#: conf/global_settings.py:64 +msgid "Portugese" +msgstr "Португалкски" + +#: conf/global_settings.py:65 msgid "Brazilian" msgstr "Бразилски" -#: conf/global_settings.py:63 +#: conf/global_settings.py:66 msgid "Romanian" msgstr "Романски" -#: conf/global_settings.py:64 +#: conf/global_settings.py:67 msgid "Russian" msgstr "Руски" -#: conf/global_settings.py:65 +#: conf/global_settings.py:68 msgid "Slovak" msgstr "Словачки" -#: conf/global_settings.py:66 +#: conf/global_settings.py:69 msgid "Slovenian" msgstr "Словенечки" -#: conf/global_settings.py:67 +#: conf/global_settings.py:70 msgid "Serbian" msgstr "Српски" -#: conf/global_settings.py:68 +#: conf/global_settings.py:71 msgid "Swedish" msgstr "Шведски" -#: conf/global_settings.py:69 +#: conf/global_settings.py:72 msgid "Tamil" msgstr "Тамил" -#: conf/global_settings.py:70 +#: conf/global_settings.py:73 +msgid "Telugu" +msgstr "Телугу" + +#: conf/global_settings.py:74 msgid "Turkish" msgstr "Турски" -#: conf/global_settings.py:71 +#: conf/global_settings.py:75 msgid "Ukrainian" msgstr "Украински" -#: conf/global_settings.py:72 +#: conf/global_settings.py:76 msgid "Simplified Chinese" msgstr "Упростен кинески" -#: conf/global_settings.py:73 +#: conf/global_settings.py:77 msgid "Traditional Chinese" msgstr "Традиционален кинески" -#: utils/timesince.py:12 -msgid "year" -msgid_plural "years" -msgstr[0] "година" -msgstr[1] "години" +#: core/validators.py:64 +msgid "This value must contain only letters, numbers and underscores." +msgstr "Оваа вредност смее да има само букви, бројки или долни црти." -#: utils/timesince.py:13 -msgid "month" -msgid_plural "months" -msgstr[0] "месец" -msgstr[1] "месеци" +#: core/validators.py:68 +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "Оваа вредност смее да има само букви, бројки, долни црти, црти или коси црти." -#: utils/timesince.py:14 -msgid "week" -msgid_plural "weeks" -msgstr[0] "седмица" -msgstr[1] "седмици" +#: core/validators.py:72 +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "Оваа вредност смее да содржи само букви, бројки, долни црти или црти." -#: utils/timesince.py:15 -msgid "day" -msgid_plural "days" -msgstr[0] "ден" -msgstr[1] "денови" +#: core/validators.py:76 +msgid "Uppercase letters are not allowed here." +msgstr "Големи букви не се дозволени." -#: utils/timesince.py:16 -msgid "hour" -msgid_plural "hours" -msgstr[0] "час" -msgstr[1] "часови" +#: core/validators.py:80 +msgid "Lowercase letters are not allowed here." +msgstr "Мали букви не се дозволени." -#: utils/timesince.py:17 -msgid "minute" -msgid_plural "minutes" -msgstr[0] "минута" -msgstr[1] "минути" +#: core/validators.py:87 +msgid "Enter only digits separated by commas." +msgstr "Внесете само цифри одделени со запирки." + +#: core/validators.py:99 +msgid "Enter valid e-mail addresses separated by commas." +msgstr "Внесете валидни адреси за е-пошта одделени со запирки." + +#: core/validators.py:103 +msgid "Please enter a valid IP address." +msgstr "Ве молам внесете валидна ИП адреса." + +#: core/validators.py:107 +msgid "Empty values are not allowed here." +msgstr "Празни вредности не се дозволени." + +#: core/validators.py:111 +msgid "Non-numeric characters aren't allowed here." +msgstr "Ненумерички знаци не се дозволени тука." + +#: core/validators.py:115 +msgid "This value can't be comprised solely of digits." +msgstr "Оваа вредност не смее да биде само од цифри." + +#: core/validators.py:120 newforms/fields.py:128 +msgid "Enter a whole number." +msgstr "Внеси цел број." + +#: core/validators.py:124 +msgid "Only alphabetical characters are allowed here." +msgstr "Дозволени се само букви." + +#: core/validators.py:139 +msgid "Year must be 1900 or later." +msgstr "Годината мора да биде 1900 или покасно." + +#: core/validators.py:143 +#, python-format +msgid "Invalid date: %s" +msgstr "Неправилен датум: %s" + +#: core/validators.py:153 +msgid "Enter a valid time in HH:MM format." +msgstr "Внесете правилно време во форматот HH:MM." + +#: core/validators.py:162 newforms/fields.py:271 +msgid "Enter a valid e-mail address." +msgstr "Внесeте правилна адреса за е-пошта." + +#: core/validators.py:174 core/validators.py:445 oldforms/__init__.py:672 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "Не беше пратена датотека. Проверете го типот на енкодирање на формата." + +#: core/validators.py:178 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Качете валидна фотографија. Датотеката која ја качивте или не беше " +"фотографија или беше расипана датотеката." + +#: core/validators.py:185 +#, python-format +msgid "The URL %s does not point to a valid image." +msgstr "Адресата %s не покажува кон валидна фотографија." + +#: core/validators.py:189 +#, python-format +msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +msgstr "" +"Телефонските броеви мора да бидат во XXX-XXX-XXXX форматот. „%s“ не е " +"валиден." + +#: core/validators.py:197 +#, python-format +msgid "The URL %s does not point to a valid QuickTime video." +msgstr "Адресата „%s“ не покажува кон QuickTime видео." + +#: core/validators.py:201 +msgid "A valid URL is required." +msgstr "Задолжителна е правилна адреса." + +#: core/validators.py:215 +#, python-format +msgid "" +"Valid HTML is required. Specific errors are:\n" +"%s" +msgstr "" +"Задолжителен е правилен HTML. Грешките се:\n" +"%s" + +#: core/validators.py:222 +#, python-format +msgid "Badly formed XML: %s" +msgstr "Неправилно формиран XML: %s" + +#: core/validators.py:239 +#, python-format +msgid "Invalid URL: %s" +msgstr "Неправилна адреса: %s" + +#: core/validators.py:244 core/validators.py:246 +#, python-format +msgid "The URL %s is a broken link." +msgstr "Адресата %s е скршена врска." + +#: core/validators.py:252 +msgid "Enter a valid U.S. state abbreviation." +msgstr "Внесете правилна скратеница за држава во САД." + +#: 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." +msgstr[1] "Внимавајте на јазикот. Тука не се дозволени зборовите %s." + +#: core/validators.py:273 +#, python-format +msgid "This field must match the '%s' field." +msgstr "Ова поле мора да соодејствува со полето „%s“." + +#: core/validators.py:292 +msgid "Please enter something for at least one field." +msgstr "Ве молам внесете нешто во барем едно поле." + +#: core/validators.py:301 core/validators.py:312 +msgid "Please enter both fields or leave them both empty." +msgstr "Ве молам внесете во двете полиња или оставете ги двете празни." + +#: core/validators.py:320 +#, python-format +msgid "This field must be given if %(field)s is %(value)s" +msgstr "Ова поле мора да биде зададено ако %(field)s е %(value)s" + +#: core/validators.py:333 +#, python-format +msgid "This field must be given if %(field)s is not %(value)s" +msgstr "Ова поле мора да биде зададено ако %(field)s не е %(value)s" + +#: core/validators.py:352 +msgid "Duplicate values are not allowed." +msgstr "Дупликат вредности не се дозволени." + +#: core/validators.py:367 +#, python-format +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "Оваа вредноста мора да биде помеѓу %(lower)s и %(upper)s." + +#: core/validators.py:369 +#, python-format +msgid "This value must be at least %s." +msgstr "Оваа вредноста мора да биде најмалку %s." + +#: core/validators.py:371 +#, python-format +msgid "This value must be no more than %s." +msgstr "Оваа вредност не смее да биде поголема од %s." + +#: core/validators.py:407 +#, python-format +msgid "This value must be a power of %s." +msgstr "Оваа вредноста мора да биде степен од %s." + +#: core/validators.py:418 +msgid "Please enter a valid decimal number." +msgstr "Ве молам внесете правилен децимален број." + +#: core/validators.py:422 +#, python-format +msgid "Please enter a valid decimal number with at most %s total digit." +msgid_plural "Please enter a valid decimal number with at most %s total digits." +msgstr[0] "Ве молам внесете правилен децимален број со најмногу %s цифрa." +msgstr[1] "Ве молам внесете правилен децимален број со најмногу %s вкупно цифри." + +#: core/validators.py:425 +#, python-format +msgid "Please enter a valid decimal number with a whole part of at most %s digit." +msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits." +msgstr[0] "" +"Ве молам внесете правилен децимален број кој во целиот број има најмногу %s " +"цифра." +msgstr[1] "" +"Ве молам внесете правилен децимален број кој во целиот број има најмногу %s " +"цифри." + +#: core/validators.py:428 +#, python-format +msgid "Please enter a valid decimal number with at most %s decimal place." +msgid_plural "Please enter a valid decimal number with at most %s decimal places." +msgstr[0] "Ве молам внесете правилен децимален број кој има најмногу %s децимална цифра." +msgstr[1] "Ве молам внесете правилен децимален број кој има најмногу %s децимални цифри." + +#: core/validators.py:438 +#, python-format +msgid "Make sure your uploaded file is at least %s bytes big." +msgstr "Потврдете дека качената датотека има најмалку %s бајти." + +#: core/validators.py:439 +#, python-format +msgid "Make sure your uploaded file is at most %s bytes big." +msgstr "Потврдете дека качената датотека има најмногу %s бајти." + +#: core/validators.py:456 +msgid "The format for this field is wrong." +msgstr "Форматот за ова поле е грешен." + +#: core/validators.py:471 +msgid "This field is invalid." +msgstr "Ова поле не е правилно." + +#: core/validators.py:507 +#, python-format +msgid "Could not retrieve anything from %s." +msgstr "Неможев да извадам ништо од %s." + +#: core/validators.py:510 +#, python-format +msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "Адресата %(url)s врати неправилно заглавје Content-Type „%(contenttype)s“." + +#: core/validators.py:543 +#, python-format +msgid "" +"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " +"\"%(start)s\".)" +msgstr "" +"Ве молам затворете го отворениот %(tag)s таг од линијата %(line)s. (линијата " +"почнува со „%(start)s“.)" + +#: 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 "" +"Некој текст кој почнува на линијата %(line)s не е дозволен во тој контекст. " +"(Линијата започнува со „%(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“ на линија %(line)s е неправилен атрибут. (линијата започнува со „%" +"(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>“ на линија %(line)s е неправилен таг. (линијата започнува со „%" +"(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 "" +"На таг од линијата %(line)s му недостасува еден или повеќе од потребните " +"атрибути (линијата започнува со „%(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 "" +"Атрибутот „%(attr)s“ на линијата %(line)s има неправилна вредност (линијата " +"започнува со „%(start)s“)." + +#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 +msgid "The two password fields didn't match." +msgstr "Двете полиња со лозинките не се совпаѓаат." + +#: contrib/auth/forms.py:25 +msgid "A user with that username already exists." +msgstr "Веќе постои корисник со тоа корисничко име." + +#: contrib/auth/forms.py:53 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "" +"Не изгледа дека вашиот прелистувач има овозможено колачиња. Колачињата се " +"потребни за да се најавите." + +#: contrib/auth/forms.py:60 contrib/admin/views/decorators.py:10 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "" +"Ве молам внесете точно корисничко име и лозинка. Имајте на ум дека и во " +"двете полиња се битни големите и малите букви." + +#: contrib/auth/forms.py:62 +msgid "This account is inactive." +msgstr "Оваа сметка е неактивна." + +#: contrib/auth/forms.py:85 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "" +"Нема регистрирано корисник со оваа адреса за е-пошта. Сигурни ли сте дека " +"сте регистрирани?" + +#: contrib/auth/forms.py:117 +msgid "The two 'new password' fields didn't match." +msgstr "Двете нови лозинки не се совпаѓаат." + +#: contrib/auth/forms.py:124 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "Не ја внесовте точно вашата стара лозинка. Ве молам внесете ја повторно." + +#: contrib/auth/models.py:38 contrib/auth/models.py:58 +msgid "name" +msgstr "име" + +#: contrib/auth/models.py:40 +msgid "codename" +msgstr "кодно име" + +#: contrib/auth/models.py:43 +msgid "permission" +msgstr "привилегија" + +#: contrib/auth/models.py:44 contrib/auth/models.py:59 +msgid "permissions" +msgstr "привилегии" + +#: contrib/auth/models.py:62 +msgid "group" +msgstr "група" + +#: contrib/auth/models.py:63 contrib/auth/models.py:103 +msgid "groups" +msgstr "групи" + +#: contrib/auth/models.py:93 +msgid "username" +msgstr "корисничко име" + +#: contrib/auth/models.py:93 +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "" +"Дозволени се најмногу 30 знаци. Дозволени се само алфанумерички знаци " +"(букви, цифри и долна црта)." + +#: contrib/auth/models.py:94 +msgid "first name" +msgstr "име" + +#: contrib/auth/models.py:95 +msgid "last name" +msgstr "презиме" + +#: contrib/auth/models.py:96 +msgid "e-mail address" +msgstr "е-пошта" + +#: contrib/auth/models.py:97 +msgid "password" +msgstr "лозинка" + +#: contrib/auth/models.py:97 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "" +"Користете '[algo]$[salt]$[hexdigest]' или користете ја формата за промена на лозинката." + +#: contrib/auth/models.py:98 +msgid "staff status" +msgstr "статус на администраторите" + +#: contrib/auth/models.py:98 +msgid "Designates whether the user can log into this admin site." +msgstr "Означува дали корисникот може да се логира во сајтот за администрација." + +#: contrib/auth/models.py:99 +msgid "active" +msgstr "активен" + +#: contrib/auth/models.py:99 +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "" +"Означува дали корисникот може да се логира. Одштиклирајте го ова наместо да " +"бришете корисници." + +#: contrib/auth/models.py:100 +msgid "superuser status" +msgstr "статус на суперкорисник" + +#: contrib/auth/models.py:100 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" +"Означува дека овој корисник ги има сите привилегии без експлицитно да се " +"доделуваат сите." + +#: contrib/auth/models.py:101 +msgid "last login" +msgstr "последна најава" + +#: contrib/auth/models.py:102 +msgid "date joined" +msgstr "датум на зачленување" + +#: contrib/auth/models.py:104 +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:105 +msgid "user permissions" +msgstr "кориснички привилегии" + +#: contrib/auth/models.py:109 +msgid "user" +msgstr "корисник" + +#: contrib/auth/models.py:110 +msgid "users" +msgstr "корисници" + +#: contrib/auth/models.py:116 +msgid "Personal info" +msgstr "Лични информации" + +#: contrib/auth/models.py:117 +msgid "Permissions" +msgstr "Привилегии" + +#: contrib/auth/models.py:118 +msgid "Important dates" +msgstr "Важни датуми" + +#: contrib/auth/models.py:119 +msgid "Groups" +msgstr "Групи" + +#: contrib/auth/models.py:263 +msgid "message" +msgstr "порака" + +#: contrib/auth/views.py:39 +msgid "Logged out" +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 "object repr" + +#: contrib/admin/models.py:21 +msgid "action flag" +msgstr "знакче за акција" + +#: contrib/admin/models.py:22 +msgid "change message" +msgstr "измени ја пораката" + +#: contrib/admin/models.py:25 +msgid "log entry" +msgstr "ставка во записникот" + +#: contrib/admin/models.py:26 +msgid "log entries" +msgstr "ставки во записникот" + +#: contrib/admin/filterspecs.py:40 +#, python-format +msgid "" +"

                      By %s:

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

                        Од %s:

                        \n" +"
                          \n" + +#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88 +#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169 +msgid "All" +msgstr "Сите" + +#: contrib/admin/filterspecs.py:109 +msgid "Any date" +msgstr "Било кој датум" + +#: contrib/admin/filterspecs.py:110 +msgid "Today" +msgstr "Денеска" + +#: contrib/admin/filterspecs.py:113 +msgid "Past 7 days" +msgstr "Последните 7 дена" + +#: contrib/admin/filterspecs.py:115 +msgid "This month" +msgstr "Овој месец" + +#: contrib/admin/filterspecs.py:117 +msgid "This year" +msgstr "Оваа година" + +#: contrib/admin/filterspecs.py:143 oldforms/__init__.py:577 +#: newforms/widgets.py:174 +msgid "Yes" +msgstr "Да" + +#: contrib/admin/filterspecs.py:143 oldforms/__init__.py:577 +#: newforms/widgets.py:174 +msgid "No" +msgstr "Не" + +#: contrib/admin/filterspecs.py:150 oldforms/__init__.py:577 +#: newforms/widgets.py:174 +msgid "Unknown" +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:19 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "%(name)s \"%(obj)s\" беше успешно додаден." + +#: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347 +#: contrib/admin/views/auth.py:24 +msgid "You may edit it again below." +msgstr "Подолу можете повторно да го уредите." + +#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356 +#, python-format +msgid "You may add another %s below." +msgstr "Подолу можете да додате уште еден %s." + +#: contrib/admin/views/main.py:289 +#, python-format +msgid "Add %s" +msgstr "Додади %s" + +#: contrib/admin/views/main.py:335 +#, python-format +msgid "Added %s." +msgstr "Додадено %s." + +#: contrib/admin/views/main.py:337 +#, python-format +msgid "Changed %s." +msgstr "Изменета %s." + +#: contrib/admin/views/main.py:339 +#, python-format +msgid "Deleted %s." +msgstr "Избришана %s." + +#: contrib/admin/views/main.py:342 +msgid "No fields changed." +msgstr "Не беше изменето ниедно поле." + +#: contrib/admin/views/main.py:345 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" беше успешно изменета." + +#: contrib/admin/views/main.py:353 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "" +"%(name)s \"%(obj)s\" беше успешно додадена.Подолу можете повторно да ја " +"уредите." + +#: contrib/admin/views/main.py:391 +#, python-format +msgid "Change %s" +msgstr "Измени %s" + +#: contrib/admin/views/main.py:476 +#, python-format +msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +msgstr "Еден или повеќе %(fieldname)s во %(name)s: %(obj)s" + +#: contrib/admin/views/main.py:481 +#, python-format +msgid "One or more %(fieldname)s in %(name)s:" +msgstr "Еден или повеќе %(fieldname)s во %(name)s:" + +#: contrib/admin/views/main.py:514 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "%(name)s \"%(obj)s\" беше избришана успешно." + +#: contrib/admin/views/main.py:517 +msgid "Are you sure?" +msgstr "Сигурни сте?" + +#: contrib/admin/views/main.py:539 +#, python-format +msgid "Change history: %s" +msgstr "Историја на измени: %s" + +#: contrib/admin/views/main.py:573 +#, python-format +msgid "Select %s" +msgstr "Изберет %s" + +#: contrib/admin/views/main.py:573 +#, python-format +msgid "Select %s to change" +msgstr "Изберете %s за измена" + +#: contrib/admin/views/main.py:768 +msgid "Database error" +msgstr "Грешка во базата со податоци" + +#: contrib/admin/views/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 %(name)r not found in app %(label)r" +msgstr "Моделот %(name)r не е најден во апликацијата %(label)r" + +#: contrib/admin/views/doc.py:183 +#, python-format +msgid "the related `%(label)s.%(type)s` object" +msgstr "поврзаниот`%(label)s.%(type)s` објект" + +#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205 +#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224 +msgid "model:" +msgstr "модел:" + +#: contrib/admin/views/doc.py:214 +#, python-format +msgid "related `%(label)s.%(name)s` objects" +msgstr "поврзани `%(label)s.%(name)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: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 "Збор (до %(maxlength)s)" + +#: contrib/admin/views/doc.py:294 +msgid "Comma-separated integers" +msgstr "Целобројни вредности одделени со запирка" + +#: contrib/admin/views/doc.py:295 +msgid "Date (without time)" +msgstr "Датум (без час)" + +#: contrib/admin/views/doc.py:296 +msgid "Date (with time)" +msgstr "Датум (со час)" + +#: contrib/admin/views/doc.py:297 +msgid "E-mail address" +msgstr "Адреса на е-пошта" + +#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299 +#: contrib/admin/views/doc.py:302 +msgid "File path" +msgstr "Патека на датотека" + +#: contrib/admin/views/doc.py:300 +msgid "Decimal number" +msgstr "Децимален број" + +#: contrib/admin/views/doc.py:304 contrib/comments/models.py:85 +msgid "IP address" +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 "URL" + +#: contrib/admin/views/doc.py:316 +msgid "U.S. state (two uppercase letters)" +msgstr "Држава во САД (две големи букви)" + +#: contrib/admin/views/doc.py:317 +msgid "XML text" +msgstr "XML текст" + +#: contrib/admin/views/doc.py:343 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "%s не изгледа дека е url објект" + +#: contrib/admin/views/auth.py:30 +msgid "Add user" +msgstr "Додади корисник" + +#: contrib/admin/views/auth.py:57 +msgid "Password changed successfully." +msgstr "Успешна промена на лозинката." + +#: contrib/admin/views/auth.py:64 +#, python-format +msgid "Change password: %s" +msgstr "Промени лозинка: %s" + +#: contrib/admin/templatetags/admin_list.py:247 +msgid "All dates" +msgstr "Сите датуми" + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "Прикажи ги сите" + +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +msgid "Documentation" +msgstr "Документација" + +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:46 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +msgid "Change password" +msgstr "Промени лозинка" + +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/comments/templates/comments/form.html:6 +msgid "Log out" +msgstr "Одјава" + +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/change_form.html:13 +#: contrib/admin/templates/admin/change_list.html:6 +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/admin/base.html:30 +#: contrib/admin/templates/admin/auth/user/change_password.html:12 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/logged_out.html:4 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/registration/password_change_done.html:4 +msgid "Home" +msgstr "Дома" + +#: contrib/admin/templates/admin/delete_confirmation.html:9 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Delete" +msgstr "Избриши" + +#: contrib/admin/templates/admin/delete_confirmation.html:14 +#, python-format +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" +msgstr "" +"Бришење на %(object_name)s '%(escaped_object)s' ќе резултира со бришење на " +"поврзаните објекти, но со вашата сметка немате доволно привилегии да ги " +"бришете следните типови на објекти:" + +#: contrib/admin/templates/admin/delete_confirmation.html:21 +#, python-format +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" +msgstr "" +"Сигурне сте дека сакате да ги бришете %(object_name)s „%(escaped_object)s“? " +"Сите овие ставки ќе бидат избришани:" + +#: contrib/admin/templates/admin/delete_confirmation.html:26 +msgid "Yes, I'm sure" +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/change_form.html:15 +#: contrib/admin/templates/admin/index.html:28 +msgid "Add" +msgstr "Додади" + +#: contrib/admin/templates/admin/change_form.html:21 +#: contrib/admin/templates/admin/object_history.html:5 +msgid "History" +msgstr "Историја" + +#: contrib/admin/templates/admin/change_form.html:22 +msgid "View on site" +msgstr "Погледни на сајтот" + +#: contrib/admin/templates/admin/change_form.html:32 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Ве молам поправете ја грешката подолу." +msgstr[1] "Ве молам поправете ги грешките подолу." + +#: contrib/admin/templates/admin/change_form.html:50 +msgid "Ordering" +msgstr "Подредување" + +#: contrib/admin/templates/admin/change_form.html:53 +msgid "Order:" +msgstr "Подреди:" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr " Од %(filter_title)s " + +#: 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/change_list.html:12 +#, python-format +msgid "Add %(name)s" +msgstr "Додади %(name)s" + +#: contrib/admin/templates/admin/index.html:17 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "Достапни модели во апликацијата %(name)s." + +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "%(name)s" +msgstr "%(name)s" + +#: contrib/admin/templates/admin/index.html:34 +msgid "Change" +msgstr "Измени" + +#: contrib/admin/templates/admin/index.html:44 +msgid "You don't have permission to edit anything." +msgstr "Немате дозвола ништо да уредува." + +#: contrib/admin/templates/admin/index.html:52 +msgid "Recent Actions" +msgstr "Последни акции" + +#: contrib/admin/templates/admin/index.html:53 +msgid "My Actions" +msgstr "Мои акции" + +#: contrib/admin/templates/admin/index.html:57 +msgid "None available" +msgstr "Ништо не е достапно" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "Џанго администрација на сајт" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +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 "j M Y, H:i" + +#: contrib/admin/templates/admin/object_history.html:36 +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "" +"Овој објект нема историја на измени. Најверојатно не бил додаден со админ " +"сајтот." + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "Грешка со серверот" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "Грешка со серверот (500)" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "Грешка со серверот (500)" + +#: contrib/admin/templates/admin/500.html:10 +msgid "" +"There's been an error. It's been reported to the site administrators via e-" +"mail and should be fixed shortly. Thanks for your patience." +msgstr "" +"Имаше грешка. Истата беше пријавена на администраторите и ќе биде поправена " +"во брзо време. Ви благодариме за вашето трпение." + +#: contrib/admin/templates/admin/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 "Оди" + +#: 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/filters.html:4 +msgid "Filter" +msgstr "Филтер" + +#: contrib/admin/templates/admin/login.html:17 +#: contrib/comments/templates/comments/form.html:6 +#: contrib/comments/templates/comments/form.html:8 +msgid "Username:" +msgstr "Корисник:" + +#: contrib/admin/templates/admin/login.html:20 +#: contrib/comments/templates/comments/form.html:8 +msgid "Password:" +msgstr "Лозинка:" + +#: contrib/admin/templates/admin/base.html:25 +msgid "Welcome," +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 +#: contrib/admin/templates/admin/auth/user/change_password.html:34 +msgid "Password" +msgstr "Лозинка" + +#: contrib/admin/templates/admin/auth/user/add_form.html:23 +#: contrib/admin/templates/admin/auth/user/change_password.html:39 +msgid "Password (again)" +msgstr "Лозинка (повторно)" + +#: contrib/admin/templates/admin/auth/user/add_form.html:24 +#: contrib/admin/templates/admin/auth/user/change_password.html:40 +msgid "Enter the same password as above, for verification." +msgstr "Заради верификација внесете ја истата лозинка како и горе." + +#: contrib/admin/templates/admin/auth/user/change_password.html:28 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "Внесете нова лозинка за корисникот %(username)s." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Bookmarklets" +msgstr "Обележувачи" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:5 +msgid "Documentation bookmarklets" +msgstr "Обележувачи на документација" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:9 +msgid "" +"\n" +"

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

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

                          За да инсталирате обележувачи, влечете ја врската до " +"вашата\n" +"лента со алатки, или кликнете со десното копче и додадете го во вашите \n" +"обележувачи. Сега може да го изберете обележувачот од било која страница " +"на \n" +"сајтот. Имајте на ум дека за некои од овие обележувачи е потребно да го " +"гледате \n" +"сајтот од компјутер кој е означен како „внатрешен“ (разговарајте со вашиот \n" +"администратор ако не сте сигурни).

                          \n" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:19 +msgid "Documentation for this page" +msgstr "Документација за оваа страница" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:20 +msgid "" +"Jumps you from any page to the documentation for the view that generates " +"that page." +msgstr "" +"Ве носи од било која страница од документацијата до погледот кој ја генерира " +"таа страница." + +#: 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/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:6 +#: contrib/admin/templates/registration/password_reset_form.html:10 +#: contrib/admin/templates/registration/password_reset_done.html:4 +msgid "Password reset" +msgstr "Ресетирање на лозинка" + +#: contrib/admin/templates/registration/password_reset_form.html:12 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll reset " +"your password and e-mail the new one to you." +msgstr "" +"Сте ја заборавиле вашата лозинка? Внесете ја вашата е-пошта подолу, ќе ја " +"ресетираме вашата лозинка и новата ќе ви ја пратиме по е-пошта." + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "Е-пошта:" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "Ресетирај ја мојата лозинка" + +#: contrib/admin/templates/registration/password_reset_email.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "Ја добивата оваа порака бидејќи побаравте да се ресетира вашата лозинка" + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "за корисничката сметка на %(site_name)s" + +#: contrib/admin/templates/registration/password_reset_email.html:5 +#, python-format +msgid "Your new password is: %(new_password)s" +msgstr "Вашата нова лозинка е: %(new_password)s" + +#: contrib/admin/templates/registration/password_reset_email.html:7 +msgid "Feel free to change this password by going to this page:" +msgstr "Чуствувајте се слободно да ја промените оваа лозинка преку оваа страница:" + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Your username, in case you've forgotten:" +msgstr "Вашето корисничко име, во случај да сте го заборавиле:" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +msgid "Thanks for using our site!" +msgstr "Ви благодариме што го користите овој сајт!" + +#: contrib/admin/templates/registration/password_reset_email.html:15 +#, python-format +msgid "The %(site_name)s team" +msgstr "Тимот на %(site_name)s" + +#: contrib/admin/templates/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:4 +#: contrib/admin/templates/registration/password_change_form.html:6 +#: contrib/admin/templates/registration/password_change_form.html:10 +#: contrib/admin/templates/registration/password_change_done.html:4 +msgid "Password change" +msgstr "Измена на лозинка" + +#: contrib/admin/templates/registration/password_change_form.html:12 +msgid "" +"Please enter your old password, for security's sake, and then enter your new " +"password twice so we can verify you typed it in correctly." +msgstr "" +"Заради сигурност ве молам внесете ја вашата стара лозинка и потоа внесете ја " +"новата двапати за да може да се потврди дека правилно сте ја искуцале." + +#: contrib/admin/templates/registration/password_change_form.html:17 +msgid "Old password:" +msgstr "Стара лозинка:" + +#: contrib/admin/templates/registration/password_change_form.html:19 +msgid "New password:" +msgstr "Нова лозинка:" + +#: contrib/admin/templates/registration/password_change_form.html:21 +msgid "Confirm password:" +msgstr "Потврди лозинка:" + +#: contrib/admin/templates/registration/password_change_form.html:23 +msgid "Change my password" +msgstr "Промени ја мојата лозинка" + +#: contrib/admin/templates/registration/password_change_done.html:6 +#: contrib/admin/templates/registration/password_change_done.html:10 +msgid "Password change successful" +msgstr "Успешна промена на лозинката" + +#: contrib/admin/templates/registration/password_change_done.html:12 +msgid "Your password was changed." +msgstr "Вашата лозинка беше сменета." + +#: contrib/sites/models.py:10 +msgid "domain name" +msgstr "домејн" + +#: contrib/sites/models.py:11 +msgid "display name" +msgstr "име кое се прикажува" + +#: contrib/sites/models.py:15 +msgid "site" +msgstr "сајт" + +#: contrib/sites/models.py:16 +msgid "sites" +msgstr "сајтови" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "th" +msgstr "th" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "st" +msgstr "st" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "nd" +msgstr "nd" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "rd" +msgstr "rd" + +#: contrib/humanize/templatetags/humanize.py:47 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "%(value).1f милион" +msgstr[1] "%(value).1f милион" + +#: contrib/humanize/templatetags/humanize.py:50 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "%(value).1f милијарда" +msgstr[1] "%(value).1f милијарда" + +#: contrib/humanize/templatetags/humanize.py:53 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "%(value).1f трилион" +msgstr[1] "%(value).1f трилион" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "one" +msgstr "еден" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "two" +msgstr "два" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "three" +msgstr "три" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "four" +msgstr "четири" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "five" +msgstr "пет" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "six" +msgstr "шест" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "seven" +msgstr "седум" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "eight" +msgstr "осум" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "nine" +msgstr "девет" + +#: contrib/flatpages/models.py:8 +msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" +"На пр. „/za/kontakt/“. Осигурајте се да имате коса црта и на крајот и на " +"почетокот." + +#: contrib/flatpages/models.py:9 +msgid "title" +msgstr "наслов" + +#: contrib/flatpages/models.py:10 +msgid "content" +msgstr "содржина" + +#: contrib/flatpages/models.py:11 +msgid "enable comments" +msgstr "овозможи коментари" + +#: contrib/flatpages/models.py:12 +msgid "template name" +msgstr "име на шаблонот" + +#: contrib/flatpages/models.py:13 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" +"На пр. „flatpages/kontakt.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/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 "" +"Ова треба да биде апсолутна патека без името на домејнот. На пр. „/nastani/" +"prebaraj/“." + +#: 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 "" +"Ова може да биде или апсолутна патека (како погоре) или цела адреса " +"почувајќи со „http://“." + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "пренасочување" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "пренасочувања" + +#: contrib/comments/models.py:67 contrib/comments/models.py:166 +msgid "object ID" +msgstr "object ID" + +#: contrib/comments/models.py:68 +msgid "headline" +msgstr "наслов" + +#: contrib/comments/models.py:69 contrib/comments/models.py:90 +#: contrib/comments/models.py:167 +msgid "comment" +msgstr "коментар" + +#: contrib/comments/models.py:70 +msgid "rating #1" +msgstr "популарност #1" + +#: contrib/comments/models.py:71 +msgid "rating #2" +msgstr "популарност #2" + +#: contrib/comments/models.py:72 +msgid "rating #3" +msgstr "популарност #3" + +#: contrib/comments/models.py:73 +msgid "rating #4" +msgstr "популарност #4" + +#: contrib/comments/models.py:74 +msgid "rating #5" +msgstr "популарност #5" + +#: contrib/comments/models.py:75 +msgid "rating #6" +msgstr "популарност #6" + +#: contrib/comments/models.py:76 +msgid "rating #7" +msgstr "популарност #7" + +#: contrib/comments/models.py:77 +msgid "rating #8" +msgstr "популарност #8" + +#: contrib/comments/models.py:82 +msgid "is valid rating" +msgstr "е валидна популарност" + +#: contrib/comments/models.py:83 contrib/comments/models.py:169 +msgid "date/time submitted" +msgstr "датум/време пријавен" + +#: contrib/comments/models.py:84 contrib/comments/models.py:170 +msgid "is public" +msgstr "е јавен" + +#: contrib/comments/models.py: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 "Content објект" + +#: contrib/comments/models.py:159 +#, python-format +msgid "" +"Posted by %(user)s at %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" +msgstr "" +"Напишан од %(user)s на %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" + +#: contrib/comments/models.py:168 +msgid "person's name" +msgstr "име на личноста" + +#: contrib/comments/models.py:171 +msgid "ip address" +msgstr "ип адреса" + +#: contrib/comments/models.py:173 +msgid "approved by staff" +msgstr "одобрено од администраторите" + +#: contrib/comments/models.py:176 +msgid "free comment" +msgstr "слободен коментар" + +#: contrib/comments/models.py:177 +msgid "free comments" +msgstr "слободни коментари" + +#: contrib/comments/models.py:233 +msgid "score" +msgstr "поени" + +#: contrib/comments/models.py:234 +msgid "score date" +msgstr "датум поени" + +#: contrib/comments/models.py:237 +msgid "karma score" +msgstr "карма поен" + +#: contrib/comments/models.py:238 +msgid "karma scores" +msgstr "карма поени" + +#: contrib/comments/models.py:242 +#, python-format +msgid "%(score)d rating by %(user)s" +msgstr "%(score)d гласање за популарност од %(user)s" + +#: contrib/comments/models.py:258 +#, python-format +msgid "" +"This comment was flagged by %(user)s:\n" +"\n" +"%(text)s" +msgstr "" +"Овој коментар беше означен од %(user)s:\n" +"\n" +"%(text)s" + +#: contrib/comments/models.py:265 +msgid "flag date" +msgstr "датум на означување" + +#: contrib/comments/models.py:268 +msgid "user flag" +msgstr "корисничка ознака" + +#: contrib/comments/models.py:269 +msgid "user flags" +msgstr "кориснички ознаки" + +#: contrib/comments/models.py:273 +#, python-format +msgid "Flag by %r" +msgstr "Означено од %r" + +#: contrib/comments/models.py:278 +msgid "deletion date" +msgstr "датум на бришење" + +#: contrib/comments/models.py:280 +msgid "moderator deletion" +msgstr "бришење од модератор" + +#: contrib/comments/models.py:281 +msgid "moderator deletions" +msgstr "бришења од модератор" + +#: contrib/comments/models.py:285 +#, python-format +msgid "Moderator deletion by %r" +msgstr "Бришење од модератор од %r" + +#: contrib/comments/views/karma.py:19 +msgid "Anonymous users cannot vote" +msgstr "Анонимните корисници неможе да гласаат" + +#: contrib/comments/views/karma.py:23 +msgid "Invalid comment ID" +msgstr "Невалидно ИД на коментарот" + +#: contrib/comments/views/karma.py:25 +msgid "No voting for yourself" +msgstr "Нема гласање за самиот себе" + +#: contrib/comments/views/comments.py:27 +msgid "This rating is required because you've entered at least one other rating." +msgstr "" +"Ова гласање за популарност е потребно бидејќи внесовте најмалку уште едно " +"друго." + +#: contrib/comments/views/comments.py:111 +#, python-format +msgid "" +"This comment was posted by a user who has posted fewer than %(count)s " +"comment:\n" +"\n" +"%(text)s" +msgid_plural "" +"This comment was posted by a user who has posted fewer than %(count)s " +"comments:\n" +"\n" +"%(text)s" +msgstr[0] "" +"Овој коментар беше пратен од корисник кој пратил помалку од %(count)s " +"коментар:\n" +"\n" +"%(text)s" +msgstr[1] "" +"Овој коментар беше пратен од корисник кој пратил помалку од %(count)s " +"коментари:\n" +"\n" +"%(text)s" + +#: contrib/comments/views/comments.py:116 +#, python-format +msgid "" +"This comment was posted by a sketchy user:\n" +"\n" +"%(text)s" +msgstr "" +"Овој коментар беше пратен од недоверлив корисник:\n" +"\n" +"%(text)s" + +#: contrib/comments/views/comments.py:188 +#: contrib/comments/views/comments.py:280 +msgid "Only POSTs are allowed" +msgstr "Дозволено е само POST" + +#: contrib/comments/views/comments.py:192 +#: contrib/comments/views/comments.py:284 +msgid "One or more of the required fields wasn't submitted" +msgstr "Едно или повеќе од потребните полиња не беше пополнето" + +#: contrib/comments/views/comments.py:196 +#: contrib/comments/views/comments.py:286 +msgid "Somebody tampered with the comment form (security violation)" +msgstr "Некој ја променил формата за коментари (сигурносен прекршок)" + +#: contrib/comments/views/comments.py:206 +#: contrib/comments/views/comments.py:292 +msgid "" +"The comment form had an invalid 'target' parameter -- the object ID was " +"invalid" +msgstr "" +"Формата за коментар имаше неправилен „target“ параметар - идентификациониот " +"број на објектот беше неправилен" + +#: 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: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/localflavor/br/forms.py:18 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "Внесете правилен поштенски број во форматот XXXXX-XXX." + +#: contrib/localflavor/br/forms.py:30 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "Телефонските броеви мора да бидат во XX-XXXX-XXXX форматот." + +#: contrib/localflavor/de/forms.py:16 contrib/localflavor/fi/forms.py:14 +#: contrib/localflavor/fr/forms.py:17 contrib/localflavor/it/forms.py:14 +msgid "Enter a zip code in the format XXXXX." +msgstr "Внесете правилен поштенски број во формат XXXXXX." + +#: contrib/localflavor/de/forms.py:60 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "Внесете правилен број на лична карта во Германија во XXXXXXXXXXX-XXXXXXX-XXXXXXX-X форматот." + +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "Баден-Вуертемберг" + +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "Баварија" + +#: contrib/localflavor/de/de_states.py:7 +msgid "Berlin" +msgstr "Берлин" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "Бранденбург" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "Бремен" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "Хамбург" + +#: contrib/localflavor/de/de_states.py:11 +msgid "Hessen" +msgstr "Хесен" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "Мекленбург - Западна Померанија" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "Долна Саксонија" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "Северна Рајна-Вестфалија" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "Рајналенд-Палатинате" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "Сарленд" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "Саксонија" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "Саксонија-Анхалт" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "Шлесвиг-Холштајн" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "Турингиа" + +#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:46 +msgid "Enter a valid Finnish social security number." +msgstr "Внесте правилен фински матичен број." + +#: contrib/localflavor/jp/forms.py:21 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "Внесете поштенски број во форматот XXXXXXX или XXX-XXXX." + +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "Хокаидо" + +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" +msgstr "Аомори" + +#: contrib/localflavor/jp/jp_prefectures.py:6 +msgid "Iwate" +msgstr "Ивате" + +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" +msgstr "Мијаги" + +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" +msgstr "Акита" + +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" +msgstr "Јамагата" + +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" +msgstr "Фукушима" + +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "Ибараки" + +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" +msgstr "Точиги" + +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" +msgstr "Гунма" + +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" +msgstr "Саитама" + +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" +msgstr "Чиба" + +#: contrib/localflavor/jp/jp_prefectures.py:16 +msgid "Tokyo" +msgstr "Токио" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "Канагава" + +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "Јаманаши" + +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" +msgstr "Нагано" + +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" +msgstr "Нигита" + +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" +msgstr "Тојама" + +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "Ишикава" + +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" +msgstr "Фукуи" + +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" +msgstr "Гифу" + +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "Шизоука" + +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" +msgstr "Аичи" + +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" +msgstr "Мие" + +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" +msgstr "Шига" + +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" +msgstr "Кјото" + +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" +msgstr "Осака" + +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" +msgstr "Хиого" + +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "Нара" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "Вакајама" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "Тотори" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +msgid "Shimane" +msgstr "Шимане" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "Окајама" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "Хирошима" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "Јамагучи" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "Токушима" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +msgid "Kagawa" +msgstr "Кагава" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +msgid "Ehime" +msgstr "Еиме" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "Кочи" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "Фукуока" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "Сага" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "Нагасаки" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "Кумамото" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "Оита" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "Мијазаки" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "Кагошима" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" +msgstr "Окинава" + +#: contrib/localflavor/no/forms.py:15 +msgid "Enter a zip code in the format XXXX." +msgstr "Внесете правилен поштенски број во форматот XXXX." + +#: contrib/localflavor/no/forms.py:36 +msgid "Enter a valid Norwegian social security number." +msgstr "Ве молам внесете правилен норвешки матичен број." + +#: contrib/localflavor/uk/forms.py:18 +msgid "Enter a postcode. A space is required between the two postcode parts." +msgstr "Внесете поштенски број. Задолжително е празно место помеѓу двата дела на поштенскиот број." + +#: contrib/localflavor/usa/forms.py:18 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "Внесете поштенски број во форматот XXXXX или XXXXX-XXXX." + +#: contrib/localflavor/usa/forms.py:51 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "Внесте правилен матичен број за САД во XXX-XX-XXXX форматот." + +#: contrib/sessions/models.py:68 +msgid "session key" +msgstr "клуч на сесијата" + +#: contrib/sessions/models.py:69 +msgid "session data" +msgstr "податоци од сесијата" + +#: contrib/sessions/models.py:70 +msgid "expire date" +msgstr "датум на истекување" + +#: contrib/sessions/models.py:74 +msgid "session" +msgstr "сесија" + +#: contrib/sessions/models.py:75 +msgid "sessions" +msgstr "сесии" + +#: contrib/contenttypes/models.py:36 +msgid "python model class name" +msgstr "има на класата на питон моделите" + +#: contrib/contenttypes/models.py:39 +msgid "content type" +msgstr "content type" + +#: contrib/contenttypes/models.py:40 +msgid "content types" +msgstr "content types" + +#: oldforms/__init__.py:392 +#, python-format +msgid "Ensure your text is less than %s character." +msgid_plural "Ensure your text is less than %s characters." +msgstr[0] "Осигурајте се дека вашиот текст има помалку од %s знак." +msgstr[1] "Осигурајте се дека вашиот текст има помалку од %s знаци." + +#: oldforms/__init__.py:397 +msgid "Line breaks are not allowed here." +msgstr "Тука не се дозволени прекини на линија." + +#: oldforms/__init__.py:498 oldforms/__init__.py:571 oldforms/__init__.py:610 +#, python-format +msgid "Select a valid choice; '%(data)s' is not in %(choices)s." +msgstr "Изберете правилно, %(data)s' не е во %(choices)s." + +#: oldforms/__init__.py:674 +msgid "The submitted file is empty." +msgstr "Пратената датотека е празна." + +#: oldforms/__init__.py:730 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "Внесете цел број помеѓу -32,768 и 32,767." + +#: oldforms/__init__.py:740 +msgid "Enter a positive number." +msgstr "Внесете позитивен број." + +#: oldforms/__init__.py:750 +msgid "Enter a whole number between 0 and 32,767." +msgstr "Внесете цел број помеѓу 0 и 32,767." + +#: 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 беше избришан." #: utils/dates.py:6 msgid "Monday" @@ -409,1912 +2612,144 @@ msgstr "ное." msgid "Dec." msgstr "дек." -#: utils/translation/trans_real.py:362 +#: 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/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:358 msgid "DATE_FORMAT" -msgstr "N j, Y" +msgstr "j M Y" -#: utils/translation/trans_real.py:363 +#: utils/translation/trans_real.py:359 msgid "DATETIME_FORMAT" -msgstr "N j, Y, P" +msgstr "j M Y, P" -#: utils/translation/trans_real.py:364 +#: utils/translation/trans_real.py:360 msgid "TIME_FORMAT" msgstr "P" -#: utils/translation/trans_real.py:380 +#: utils/translation/trans_real.py:376 msgid "YEAR_MONTH_FORMAT" msgstr "F Y" -#: utils/translation/trans_real.py:381 +#: utils/translation/trans_real.py:377 msgid "MONTH_DAY_FORMAT" msgstr "F j" -#: oldforms/__init__.py:387 -#, 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 знаци." +#: template/defaultfilters.py:491 +msgid "yes,no,maybe" +msgstr "да, не, можеби" -#: oldforms/__init__.py:392 -msgid "Line breaks are not allowed here." -msgstr "Тука не се дозволени прекини на линија." - -#: oldforms/__init__.py:493 oldforms/__init__.py:566 oldforms/__init__.py:605 -#, python-format -msgid "Select a valid choice; '%(data)s' is not in %(choices)s." -msgstr "Изберете правилно, %(data)s' не е во %(choices)s." - -#: oldforms/__init__.py:572 contrib/admin/filterspecs.py:150 -#: newforms/widgets.py:162 -msgid "Unknown" -msgstr "Непознато" - -#: oldforms/__init__.py:572 contrib/admin/filterspecs.py:143 -#: newforms/widgets.py:162 -msgid "Yes" -msgstr "Да" - -#: oldforms/__init__.py:572 contrib/admin/filterspecs.py:143 -#: newforms/widgets.py:162 -msgid "No" -msgstr "Не" - -#: oldforms/__init__.py:667 core/validators.py:173 core/validators.py:442 -msgid "No file was submitted. Check the encoding type on the form." -msgstr "Не беше пратена датотека. Проверете го типот на енкодирање на формата." - -#: oldforms/__init__.py:669 -msgid "The submitted file is empty." -msgstr "Пратената датотека е празна." - -#: oldforms/__init__.py:725 -msgid "Enter a whole number between -32,768 and 32,767." -msgstr "Внесете цел број помеѓу -32,768 и 32,767." - -#: oldforms/__init__.py:735 -msgid "Enter a positive number." -msgstr "Внесете позитивен број." - -#: oldforms/__init__.py:745 -msgid "Enter a whole number between 0 and 32,767." -msgstr "Внесете цел број помеѓу 0 и 32,767." - -#: 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/auth/forms.py:17 contrib/auth/forms.py:138 -msgid "The two password fields didn't match." -msgstr "Двете полиња со лозинките не се совпаѓаат." - -#: contrib/auth/forms.py:25 -msgid "A user with that username already exists." -msgstr "Веќе постои корисник со тоа корисничко име." - -#: contrib/auth/forms.py:53 -msgid "" -"Your Web browser doesn't appear to have cookies enabled. Cookies are " -"required for logging in." -msgstr "Не изгледа дека вашиот прелистувач има овозможено колачиња. Колачињата се потребни за да се најавите." - -#: contrib/auth/forms.py:60 contrib/admin/views/decorators.py:10 -msgid "" -"Please enter a correct username and password. Note that both fields are case-" -"sensitive." -msgstr "" -"Ве молам внесете точно корисничко име и лозинка. Имајте на ум дека и во " -"двете полиња се битни големите и малите букви." - -#: contrib/auth/forms.py:62 -msgid "This account is inactive." -msgstr "Оваа сметка е неактивна." - -#: contrib/auth/forms.py:85 -msgid "" -"That e-mail address doesn't have an associated user account. Are you sure " -"you've registered?" -msgstr "Нема регистрирано корисник со оваа адреса за е-пошта. Сигурни ли сте дека сте регистрирани?" - -#: contrib/auth/forms.py:117 -msgid "The two 'new password' fields didn't match." -msgstr "Двете нови лозинки не се совпаѓаат." - -#: contrib/auth/forms.py:124 -msgid "Your old password was entered incorrectly. Please enter it again." -msgstr "Не ја внесовте точно вашата стара лозинка. Ве молам внесете ја повторно." - -#: contrib/auth/views.py: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 "" -"Дозволени се најмногу 30 знаци. Дозволени се само алфанумерички знаци " -"(букви, цифри и долна црта)." - -#: 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]' or use the change " -"password form." -msgstr "Користете '[algo]$[salt]$[hexdigest]' или користете ја формата за промена на лозинката." - -#: contrib/auth/models.py:95 -msgid "staff status" -msgstr "статус на администраторите" - -#: contrib/auth/models.py:95 -msgid "Designates whether the user can log into this admin site." -msgstr "Означува дали корисникот може да се логира во сајтот за администрација." - -#: contrib/auth/models.py:96 -msgid "active" -msgstr "активен" - -#: contrib/auth/models.py:96 -msgid "" -"Designates whether this user can log into the Django admin. Unselect this " -"instead of deleting accounts." -msgstr "" -"Означува дали корисникот може да се логира. Одштиклирајте го ова наместо да " -"бришете корисници." - -#: contrib/auth/models.py:97 -msgid "superuser status" -msgstr "статус на суперкорисник" - -#: contrib/auth/models.py:97 -msgid "" -"Designates that this user has all permissions without explicitly assigning " -"them." -msgstr "" -"Означува дека овој корисник ги има сите привилегии без експлицитно да се " -"доделуваат сите." - -#: contrib/auth/models.py:98 -msgid "last login" -msgstr "последна најава" - -#: contrib/auth/models.py:99 -msgid "date joined" -msgstr "датум на зачленување" - -#: contrib/auth/models.py:101 -msgid "" -"In addition to the permissions manually assigned, this user will also get " -"all permissions granted to each group he/she is in." -msgstr "" -"Како дополнување на рачно доделени привилегии, овој корисник ќе ги добие " -"автоматски и сите привилегии за секоја група во која тој/таа членува." - -#: contrib/auth/models.py:102 -msgid "user permissions" -msgstr "кориснички привилегии" - -#: contrib/auth/models.py:105 -msgid "user" -msgstr "корисник" - -#: contrib/auth/models.py:106 -msgid "users" -msgstr "корисници" - -#: contrib/auth/models.py:111 -msgid "Personal info" -msgstr "Лични информации" - -#: contrib/auth/models.py:112 -msgid "Permissions" -msgstr "Привилегии" - -#: contrib/auth/models.py:113 -msgid "Important dates" -msgstr "Важни датуми" - -#: contrib/auth/models.py:114 -msgid "Groups" -msgstr "Групи" - -#: contrib/auth/models.py:258 -msgid "message" -msgstr "порака" - -#: contrib/contenttypes/models.py:26 -msgid "python model class name" -msgstr "има на класата на питон моделите" - -#: contrib/contenttypes/models.py:29 -msgid "content type" -msgstr "content type" - -#: contrib/contenttypes/models.py:30 -msgid "content types" -msgstr "content types" - -#: 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 "" -"Ова треба да биде апсолутна патека без името на домејнот. На пр. „/nastani/" -"prebaraj/“." - -#: 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 "" -"Ова може да биде или апсолутна патека (како погоре) или цела адреса " -"почувајќи со „http://“." - -#: contrib/redirects/models.py:13 -msgid "redirect" -msgstr "пренасочување" - -#: contrib/redirects/models.py:14 -msgid "redirects" -msgstr "пренасочувања" - -#: contrib/flatpages/models.py:7 contrib/admin/views/doc.py:315 -msgid "URL" -msgstr "URL" - -#: contrib/flatpages/models.py:8 -msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "" -"На пр. „/za/kontakt/“. Осигурајте се да имате коса црта и на крајот и на " -"почетокот." - -#: contrib/flatpages/models.py:9 -msgid "title" -msgstr "наслов" - -#: contrib/flatpages/models.py:10 -msgid "content" -msgstr "содржина" - -#: contrib/flatpages/models.py:11 -msgid "enable comments" -msgstr "овозможи коментари" - -#: contrib/flatpages/models.py:12 -msgid "template name" -msgstr "име на шаблонот" - -#: contrib/flatpages/models.py:13 -msgid "" -"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " -"will use 'flatpages/default.html'." -msgstr "" -"На пр. „flatpages/kontakt.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/comments/models.py:67 contrib/comments/models.py:166 -msgid "object ID" -msgstr "object ID" - -#: contrib/comments/models.py:68 -msgid "headline" -msgstr "наслов" - -#: contrib/comments/models.py:69 contrib/comments/models.py:90 -#: contrib/comments/models.py:167 -msgid "comment" -msgstr "коментар" - -#: contrib/comments/models.py:70 -msgid "rating #1" -msgstr "популарност #1" - -#: contrib/comments/models.py:71 -msgid "rating #2" -msgstr "популарност #2" - -#: contrib/comments/models.py:72 -msgid "rating #3" -msgstr "популарност #3" - -#: contrib/comments/models.py:73 -msgid "rating #4" -msgstr "популарност #4" - -#: contrib/comments/models.py:74 -msgid "rating #5" -msgstr "популарност #5" - -#: contrib/comments/models.py:75 -msgid "rating #6" -msgstr "популарност #6" - -#: contrib/comments/models.py:76 -msgid "rating #7" -msgstr "популарност #7" - -#: contrib/comments/models.py:77 -msgid "rating #8" -msgstr "популарност #8" - -#: contrib/comments/models.py:82 -msgid "is valid rating" -msgstr "е валидна популарност" - -#: contrib/comments/models.py:83 contrib/comments/models.py:169 -msgid "date/time submitted" -msgstr "датум/време пријавен" - -#: contrib/comments/models.py:84 contrib/comments/models.py:170 -msgid "is public" -msgstr "е јавен" - -#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304 -msgid "IP address" -msgstr "ИП адреса" - -#: 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 "Content објект" - -#: contrib/comments/models.py:159 -#, python-format -msgid "" -"Posted by %(user)s at %(date)s\n" -"\n" -"%(comment)s\n" -"\n" -"http://%(domain)s%(url)s" -msgstr "" -"Напишан од %(user)s на %(date)s\n" -"\n" -"%(comment)s\n" -"\n" -"http://%(domain)s%(url)s" - -#: contrib/comments/models.py:168 -msgid "person's name" -msgstr "име на личноста" - -#: contrib/comments/models.py:171 -msgid "ip address" -msgstr "ип адреса" - -#: contrib/comments/models.py:173 -msgid "approved by staff" -msgstr "одобрено од администраторите" - -#: contrib/comments/models.py:176 -msgid "free comment" -msgstr "слободен коментар" - -#: contrib/comments/models.py:177 -msgid "free comments" -msgstr "слободни коментари" - -#: contrib/comments/models.py:233 -msgid "score" -msgstr "поени" - -#: contrib/comments/models.py:234 -msgid "score date" -msgstr "датум поени" - -#: contrib/comments/models.py:237 -msgid "karma score" -msgstr "карма поен" - -#: contrib/comments/models.py:238 -msgid "karma scores" -msgstr "карма поени" - -#: contrib/comments/models.py:242 -#, python-format -msgid "%(score)d rating by %(user)s" -msgstr "%(score)d гласање за популарност од %(user)s" - -#: contrib/comments/models.py:258 -#, python-format -msgid "" -"This comment was flagged by %(user)s:\n" -"\n" -"%(text)s" -msgstr "" -"Овој коментар беше означен од %(user)s:\n" -"\n" -"%(text)s" - -#: contrib/comments/models.py:265 -msgid "flag date" -msgstr "датум на означување" - -#: contrib/comments/models.py:268 -msgid "user flag" -msgstr "корисничка ознака" - -#: contrib/comments/models.py:269 -msgid "user flags" -msgstr "кориснички ознаки" - -#: contrib/comments/models.py:273 -#, python-format -msgid "Flag by %r" -msgstr "Означено од %r" - -#: contrib/comments/models.py:278 -msgid "deletion date" -msgstr "датум на бришење" - -#: contrib/comments/models.py:280 -msgid "moderator deletion" -msgstr "бришење од модератор" - -#: contrib/comments/models.py:281 -msgid "moderator deletions" -msgstr "бришења од модератор" - -#: contrib/comments/models.py:285 -#, python-format -msgid "Moderator deletion by %r" -msgstr "Бришење од модератор од %r" - -#: contrib/comments/templates/comments/form.html:6 -#: contrib/comments/templates/comments/form.html:8 -#: contrib/admin/templates/admin/login.html:17 -msgid "Username:" -msgstr "Корисник:" - -#: contrib/comments/templates/comments/form.html:6 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 -#: contrib/admin/templates/admin_doc/missing_docutils.html:4 -#: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 -#: contrib/admin/templates/admin_doc/view_index.html:5 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 -#: contrib/admin/templates/admin_doc/model_detail.html:3 -#: contrib/admin/templates/admin_doc/model_index.html:5 -#: contrib/admin/templates/admin_doc/index.html:4 -#: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/admin/base.html:25 -#: contrib/admin/templates/admin/auth/user/change_password.html:9 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/registration/password_change_done.html:3 -msgid "Log out" -msgstr "Одјава" - -#: contrib/comments/templates/comments/form.html:8 -#: contrib/admin/templates/admin/login.html:20 -msgid "Password:" -msgstr "Лозинка:" - -#: contrib/comments/templates/comments/form.html:8 -msgid "Forgotten your password?" -msgstr "Ја заборавите вашата лозинка?" - -#: contrib/comments/templates/comments/form.html:12 -msgid "Ratings" -msgstr "Популарност" - -#: contrib/comments/templates/comments/form.html:12 -#: contrib/comments/templates/comments/form.html:23 -msgid "Required" -msgstr "Потребно" - -#: contrib/comments/templates/comments/form.html:12 -#: contrib/comments/templates/comments/form.html:23 -msgid "Optional" -msgstr "По желба" - -#: contrib/comments/templates/comments/form.html:23 -msgid "Post a photo" -msgstr "Објави фотографија" - -#: contrib/comments/templates/comments/form.html:28 -#: contrib/comments/templates/comments/freeform.html:5 -msgid "Comment:" -msgstr "Коментар:" - -#: contrib/comments/templates/comments/form.html:35 -#: contrib/comments/templates/comments/freeform.html:10 -msgid "Preview comment" -msgstr "Прегледај" - -#: contrib/comments/templates/comments/freeform.html:4 -msgid "Your name:" -msgstr "Вашето име:" - -#: contrib/comments/views/karma.py:19 -msgid "Anonymous users cannot vote" -msgstr "Анонимните корисници неможе да гласаат" - -#: contrib/comments/views/karma.py:23 -msgid "Invalid comment ID" -msgstr "Невалидно ИД на коментарот" - -#: contrib/comments/views/karma.py:25 -msgid "No voting for yourself" -msgstr "Нема гласање за самиот себе" - -#: contrib/comments/views/comments.py:27 -msgid "This rating is required because you've entered at least one other rating." -msgstr "" -"Ова гласање за популарност е потребно бидејќи внесовте најмалку уште едно " -"друго." - -#: contrib/comments/views/comments.py:111 -#, python-format -msgid "" -"This comment was posted by a user who has posted fewer than %(count)s " -"comment:\n" -"\n" -"%(text)s" -msgid_plural "" -"This comment was posted by a user who has posted fewer than %(count)s " -"comments:\n" -"\n" -"%(text)s" -msgstr[0] "" -"Овој коментар беше пратен од корисник кој пратил помалку од %(count)s " -"коментар:\n" -"\n" -"%(text)s" -msgstr[1] "" -"Овој коментар беше пратен од корисник кој пратил помалку од %(count)s " -"коментари:\n" -"\n" -"%(text)s" - -#: contrib/comments/views/comments.py:116 -#, python-format -msgid "" -"This comment was posted by a sketchy user:\n" -"\n" -"%(text)s" -msgstr "" -"Овој коментар беше пратен од недоверлив корисник:\n" -"\n" -"%(text)s" - -#: contrib/comments/views/comments.py:188 -#: contrib/comments/views/comments.py:280 -msgid "Only POSTs are allowed" -msgstr "Дозволено е само POST" - -#: contrib/comments/views/comments.py:192 -#: contrib/comments/views/comments.py:284 -msgid "One or more of the required fields wasn't submitted" -msgstr "Едно или повеќе од потребните полиња не беше пополнето" - -#: contrib/comments/views/comments.py:196 -#: contrib/comments/views/comments.py:286 -msgid "Somebody tampered with the comment form (security violation)" -msgstr "Некој ја променил формата за коментари (сигурносен прекршок)" - -#: contrib/comments/views/comments.py:206 -#: contrib/comments/views/comments.py:292 -msgid "" -"The comment form had an invalid 'target' parameter -- the object ID was " -"invalid" -msgstr "Формата за коментар имаше неправилен „target“ параметар - идентификациониот број на објектот беше неправилен" - -#: 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/sites/models.py:10 -msgid "domain name" -msgstr "домејн" - -#: contrib/sites/models.py:11 -msgid "display name" -msgstr "име кое се прикажува" - -#: contrib/sites/models.py:15 -msgid "site" -msgstr "сајт" - -#: contrib/sites/models.py:16 -msgid "sites" -msgstr "сајтови" - -#: contrib/admin/filterspecs.py:40 -#, python-format -msgid "" -"

                          By %s:

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

                            Од %s:

                            \n" -"
                              \n" - -#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88 -#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169 -msgid "All" -msgstr "Сите" - -#: contrib/admin/filterspecs.py:109 -msgid "Any date" -msgstr "Било кој датум" - -#: contrib/admin/filterspecs.py:110 -msgid "Today" -msgstr "Денеска" - -#: contrib/admin/filterspecs.py:113 -msgid "Past 7 days" -msgstr "Последните 7 дена" - -#: contrib/admin/filterspecs.py:115 -msgid "This month" -msgstr "Овој месец" - -#: contrib/admin/filterspecs.py:117 -msgid "This year" -msgstr "Оваа година" - -#: contrib/admin/models.py:16 -msgid "action time" -msgstr "време на акција" - -#: contrib/admin/models.py:19 -msgid "object id" -msgstr "идентификационен број на објект" - -#: contrib/admin/models.py:20 -msgid "object repr" -msgstr "object repr" - -#: contrib/admin/models.py:21 -msgid "action flag" -msgstr "знакче за акција" - -#: contrib/admin/models.py:22 -msgid "change message" -msgstr "измени ја пораката" - -#: contrib/admin/models.py:25 -msgid "log entry" -msgstr "ставка во записникот" - -#: contrib/admin/models.py:26 -msgid "log entries" -msgstr "ставки во записникот" - -#: contrib/admin/templatetags/admin_list.py:238 -msgid "All dates" -msgstr "Сите датуми" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:3 -#: contrib/admin/templates/admin/500.html:4 -#: contrib/admin/templates/admin/invalid_setup.html:4 -#: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/delete_confirmation.html:6 -#: contrib/admin/templates/admin/change_list.html:6 -#: contrib/admin/templates/admin/change_form.html:13 -#: contrib/admin/templates/admin/base.html:30 -#: contrib/admin/templates/admin/auth/user/change_password.html:12 -#: contrib/admin/templates/registration/logged_out.html:4 -#: contrib/admin/templates/registration/password_reset_done.html:4 -#: contrib/admin/templates/registration/password_change_form.html:4 -#: contrib/admin/templates/registration/password_change_done.html:4 -#: contrib/admin/templates/registration/password_reset_form.html:4 -msgid "Home" -msgstr "Дома" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:3 -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/admin/base.html:25 -#: contrib/admin/templates/admin/auth/user/change_password.html:9 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/registration/password_change_done.html:3 -msgid "Documentation" -msgstr "Документација" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:3 -msgid "Bookmarklets" -msgstr "Обележувачи" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 -#: contrib/admin/templates/admin_doc/missing_docutils.html:4 -#: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 -#: contrib/admin/templates/admin_doc/view_index.html:5 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 -#: contrib/admin/templates/admin_doc/model_detail.html:3 -#: contrib/admin/templates/admin_doc/model_index.html:5 -#: contrib/admin/templates/admin_doc/index.html:4 -#: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/admin/base.html:25 -#: contrib/admin/templates/admin/auth/user/change_password.html:9 -#: contrib/admin/templates/admin/auth/user/change_password.html:15 -#: contrib/admin/templates/admin/auth/user/change_password.html:46 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/registration/password_change_done.html:3 -msgid "Change password" -msgstr "Промени лозинка" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:5 -msgid "Documentation bookmarklets" -msgstr "Обележувачи на документација" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:9 -msgid "" -"\n" -"

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

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

                              За да инсталирате обележувачи, влечете ја врската до " -"вашата\n" -"лента со алатки, или кликнете со десното копче и додадете го во вашите \n" -"обележувачи. Сега може да го изберете обележувачот од било која страница " -"на \n" -"сајтот. Имајте на ум дека за некои од овие обележувачи е потребно да го " -"гледате \n" -"сајтот од компјутер кој е означен како „внатрешен“ (разговарајте со вашиот \n" -"администратор ако не сте сигурни).

                              \n" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:19 -msgid "Documentation for this page" -msgstr "Документација за оваа страница" - -#: contrib/admin/templates/admin_doc/bookmarklets.html:20 -msgid "" -"Jumps you from any page to the documentation for the view that generates " -"that page." -msgstr "" -"Ве носи од било која страница од документацијата до погледот кој ја генерира " -"таа страница." - -#: 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/admin/submit_line.html:3 -#: contrib/admin/templates/admin/delete_confirmation.html:9 -msgid "Delete" -msgstr "Избриши" - -#: contrib/admin/templates/admin/submit_line.html:4 -msgid "Save as new" -msgstr "Сними како нова" - -#: contrib/admin/templates/admin/submit_line.html:5 -msgid "Save and add another" -msgstr "Сними и додади уште" - -#: contrib/admin/templates/admin/submit_line.html:6 -msgid "Save and continue editing" -msgstr "Сними и продолжи со уредување" - -#: contrib/admin/templates/admin/submit_line.html:7 -msgid "Save" -msgstr "Сними" - -#: contrib/admin/templates/admin/500.html:4 -msgid "Server error" -msgstr "Грешка со серверот" - -#: contrib/admin/templates/admin/500.html:6 -msgid "Server error (500)" -msgstr "Грешка со серверот (500)" - -#: contrib/admin/templates/admin/500.html:9 -msgid "Server Error (500)" -msgstr "Грешка со серверот (500)" - -#: contrib/admin/templates/admin/500.html:10 -msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." -msgstr "" -"Имаше грешка. Истата беше пријавена на администраторите и ќе биде поправена " -"во брзо време. Ви благодариме за вашето трпение." - -#: contrib/admin/templates/admin/filter.html:2 -#, python-format -msgid " By %(filter_title)s " -msgstr " Од %(filter_title)s " - -#: contrib/admin/templates/admin/filters.html:4 -msgid "Filter" -msgstr "Филтер" - -#: contrib/admin/templates/admin/invalid_setup.html:8 -msgid "" -"Something's wrong with your database installation. Make sure the appropriate " -"database tables have been created, and make sure the database is readable by " -"the appropriate user." -msgstr "" -"Нешто не е во ред со инсталацијата на базата на податоци. Потврдете дека " -"соодветни табели во базата се направени и потврдете дека базата може да биде " -"прочитана од соодветниот корисник." - -#: contrib/admin/templates/admin/search_form.html:8 -msgid "Go" -msgstr "Оди" - -#: contrib/admin/templates/admin/search_form.html:10 -#, python-format -msgid "1 result" -msgid_plural "%(counter)s results" -msgstr[0] "1 резултат" -msgstr[1] "%(counter)s резултати" - -#: contrib/admin/templates/admin/search_form.html:10 -#, python-format -msgid "%(full_result_count)s total" -msgstr "вкупно %(full_result_count)s" - -#: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/change_form.html:21 -msgid "History" -msgstr "Историја" - -#: contrib/admin/templates/admin/object_history.html:18 -msgid "Date/time" -msgstr "Датум/час" - -#: contrib/admin/templates/admin/object_history.html:19 -msgid "User" -msgstr "Корисник" - -#: contrib/admin/templates/admin/object_history.html:20 -msgid "Action" -msgstr "Акција" - -#: contrib/admin/templates/admin/object_history.html:26 -msgid "DATE_WITH_TIME_FULL" -msgstr "N j. Y, H:i" - -#: contrib/admin/templates/admin/object_history.html:36 -msgid "" -"This object doesn't have a change history. It probably wasn't added via this " -"admin site." -msgstr "" -"Овој објект нема историја на измени. Најверојатно не бил додаден со админ " -"сајтот." - -#: contrib/admin/templates/admin/delete_confirmation.html:14 -#, python-format -msgid "" -"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " -"related objects, but your account doesn't have permission to delete the " -"following types of objects:" -msgstr "Бришење на %(object_name)s '%(escaped_object)s' ќе резултира со бришење на поврзаните објекти, но со вашата сметка немате доволно привилегии да ги бришете следните типови на објекти:" - -#: contrib/admin/templates/admin/delete_confirmation.html:21 -#, python-format -msgid "" -"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " -"All of the following related items will be deleted:" -msgstr "" -"Сигурне сте дека сакате да ги бришете %(object_name)s „%(escaped_object)s“? " -"Сите овие ставки ќе бидат избришани:" - -#: contrib/admin/templates/admin/delete_confirmation.html:26 -msgid "Yes, I'm sure" -msgstr "Да, сигурен сум" - -#: contrib/admin/templates/admin/pagination.html:10 -msgid "Show all" -msgstr "Прикажи ги сите" - -#: contrib/admin/templates/admin/change_list.html:12 -#, python-format -msgid "Add %(name)s" -msgstr "Додади %(name)s" - -#: contrib/admin/templates/admin/change_form.html:15 -#: contrib/admin/templates/admin/index.html:28 -msgid "Add" -msgstr "Додади" - -#: contrib/admin/templates/admin/change_form.html:22 -msgid "View on site" -msgstr "Погледни на сајтот" - -#: contrib/admin/templates/admin/change_form.html:32 -#: contrib/admin/templates/admin/auth/user/change_password.html:24 -msgid "Please correct the error below." -msgid_plural "Please correct the errors below." -msgstr[0] "Ве молам поправете ја грешката подолу." -msgstr[1] "Ве молам поправете ги грешките подолу." - -#: contrib/admin/templates/admin/change_form.html:50 -msgid "Ordering" -msgstr "Подредување" - -#: contrib/admin/templates/admin/change_form.html:53 -msgid "Order:" -msgstr "Подреди:" - -#: contrib/admin/templates/admin/base.html:25 -msgid "Welcome," -msgstr "Добредојдовте," - -#: contrib/admin/templates/admin/404.html:4 -#: contrib/admin/templates/admin/404.html:8 -msgid "Page not found" -msgstr "Страницата не е најдена" - -#: contrib/admin/templates/admin/404.html:10 -msgid "We're sorry, but the requested page could not be found." -msgstr "Се извинуваме, но неможе да ја најдеме страницата која ја баравте." - -#: contrib/admin/templates/admin/login.html:25 -#: contrib/admin/views/decorators.py:24 -msgid "Log in" -msgstr "Најава" - -#: contrib/admin/templates/admin/index.html:17 -#, python-format -msgid "Models available in the %(name)s application." -msgstr "Достапни модели во апликацијата %(name)s." - -#: contrib/admin/templates/admin/index.html:18 -#, python-format -msgid "%(name)s" -msgstr "%(name)s" - -#: contrib/admin/templates/admin/index.html:34 -msgid "Change" -msgstr "Измени" - -#: contrib/admin/templates/admin/index.html:44 -msgid "You don't have permission to edit anything." -msgstr "Немате дозвола ништо да уредува." - -#: contrib/admin/templates/admin/index.html:52 -msgid "Recent Actions" -msgstr "Последни акции" - -#: contrib/admin/templates/admin/index.html:53 -msgid "My Actions" -msgstr "Мои акции" - -#: contrib/admin/templates/admin/index.html:57 -msgid "None available" -msgstr "Ништо не е достапно" - -#: contrib/admin/templates/admin/base_site.html:4 -msgid "Django site admin" -msgstr "Џанго администрација на сајт" - -#: contrib/admin/templates/admin/base_site.html:7 -msgid "Django administration" -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 -#: contrib/admin/templates/admin/auth/user/change_password.html:34 -msgid "Password" -msgstr "Лозинка" - -#: contrib/admin/templates/admin/auth/user/add_form.html:23 -#: contrib/admin/templates/admin/auth/user/change_password.html:39 -msgid "Password (again)" -msgstr "Лозинка (повторно)" - -#: contrib/admin/templates/admin/auth/user/add_form.html:24 -#: contrib/admin/templates/admin/auth/user/change_password.html:40 -msgid "Enter the same password as above, for verification." -msgstr "Заради верификација внесете ја истата лозинка како и горе." - -#: contrib/admin/templates/admin/auth/user/change_password.html:28 -#, python-format -msgid "Enter a new password for the user %(username)s." -msgstr "Внесете нова лозинка за корисникот %(username)s." - -#: contrib/admin/templates/widget/file.html:2 -msgid "Currently:" -msgstr "Моментално:" - -#: contrib/admin/templates/widget/file.html:3 -msgid "Change:" -msgstr "Измена:" - -#: contrib/admin/templates/widget/date_time.html:3 -msgid "Date:" -msgstr "Датум:" - -#: contrib/admin/templates/widget/date_time.html:4 -msgid "Time:" -msgstr "Време:" - -#: contrib/admin/templates/registration/logged_out.html:8 -msgid "Thanks for spending some quality time with the Web site today." -msgstr "Ви благодариме што денеска поминавте квалитетно време со интернет страницава." - -#: contrib/admin/templates/registration/logged_out.html:10 -msgid "Log in again" -msgstr "Логирајте се повторно" - -#: contrib/admin/templates/registration/password_reset_email.html:2 -msgid "You're receiving this e-mail because you requested a password reset" -msgstr "Ја добивата оваа порака бидејќи побаравте да се ресетира вашата лозинка" - -#: contrib/admin/templates/registration/password_reset_email.html:3 -#, python-format -msgid "for your user account at %(site_name)s" -msgstr "за корисничката сметка на %(site_name)s" - -#: contrib/admin/templates/registration/password_reset_email.html:5 -#, python-format -msgid "Your new password is: %(new_password)s" -msgstr "Вашата нова лозинка е: %(new_password)s" - -#: contrib/admin/templates/registration/password_reset_email.html:7 -msgid "Feel free to change this password by going to this page:" -msgstr "Чуствувајте се слободно да ја промените оваа лозинка преку оваа страница:" - -#: contrib/admin/templates/registration/password_reset_email.html:11 -msgid "Your username, in case you've forgotten:" -msgstr "Вашето корисничко име, во случај да сте го заборавиле:" - -#: contrib/admin/templates/registration/password_reset_email.html:13 -msgid "Thanks for using our site!" -msgstr "Ви благодариме што го користите овој сајт!" - -#: contrib/admin/templates/registration/password_reset_email.html:15 -#, python-format -msgid "The %(site_name)s team" -msgstr "Тимот на %(site_name)s" - -#: contrib/admin/templates/registration/password_reset_done.html:4 -#: contrib/admin/templates/registration/password_reset_form.html:4 -#: contrib/admin/templates/registration/password_reset_form.html:6 -#: contrib/admin/templates/registration/password_reset_form.html:10 -msgid "Password reset" -msgstr "Ресетирање на лозинка" - -#: contrib/admin/templates/registration/password_reset_done.html:6 -#: contrib/admin/templates/registration/password_reset_done.html:10 -msgid "Password reset successful" -msgstr "Успешно е ресетирањето на лозинката" - -#: contrib/admin/templates/registration/password_reset_done.html:12 -msgid "" -"We've e-mailed a new password to the e-mail address you submitted. You " -"should be receiving it shortly." -msgstr "" -"Ви пративме нова лозинка на адресата која ја внесовте.Треба да ја примите за " -"кратко време." - -#: contrib/admin/templates/registration/password_change_form.html:4 -#: contrib/admin/templates/registration/password_change_form.html:6 -#: contrib/admin/templates/registration/password_change_form.html:10 -#: contrib/admin/templates/registration/password_change_done.html:4 -msgid "Password change" -msgstr "Измена на лозинка" - -#: contrib/admin/templates/registration/password_change_form.html:12 -msgid "" -"Please enter your old password, for security's sake, and then enter your new " -"password twice so we can verify you typed it in correctly." -msgstr "" -"Заради сигурност ве молам внесете ја вашата стара лозинка и потоа внесете ја " -"новата двапати за да може да се потврди дека правилно сте ја искуцале." - -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "Стара лозинка:" - -#: contrib/admin/templates/registration/password_change_form.html:19 -msgid "New password:" -msgstr "Нова лозинка:" - -#: contrib/admin/templates/registration/password_change_form.html:21 -msgid "Confirm password:" -msgstr "Потврди лозинка:" - -#: contrib/admin/templates/registration/password_change_form.html:23 -msgid "Change my password" -msgstr "Промени ја мојата лозинка" - -#: contrib/admin/templates/registration/password_change_done.html:6 -#: contrib/admin/templates/registration/password_change_done.html:10 -msgid "Password change successful" -msgstr "Успешна промена на лозинката" - -#: contrib/admin/templates/registration/password_change_done.html:12 -msgid "Your password was changed." -msgstr "Вашата лозинка беше сменета." - -#: contrib/admin/templates/registration/password_reset_form.html:12 -msgid "" -"Forgotten your password? Enter your e-mail address below, and we'll reset " -"your password and e-mail the new one to you." -msgstr "Сте ја заборавиле вашата лозинка? Внесете ја вашата е-пошта подолу, ќе ја ресетираме вашата лозинка и новата ќе ви ја пратиме по е-пошта." - -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "E-mail address:" -msgstr "Е-пошта:" - -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "Reset my password" -msgstr "Ресетирај ја мојата лозинка" - -#: contrib/admin/views/main.py:223 -msgid "Site administration" -msgstr "Администрација на сајт" - -#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:19 -#, python-format -msgid "The %(name)s \"%(obj)s\" was added successfully." -msgstr "%(name)s \"%(obj)s\" беше успешно додаден." - -#: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347 -#: contrib/admin/views/auth.py:24 -msgid "You may edit it again below." -msgstr "Подолу можете повторно да го уредите." - -#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356 -#, python-format -msgid "You may add another %s below." -msgstr "Подолу можете да додате уште еден %s." - -#: contrib/admin/views/main.py:289 -#, python-format -msgid "Add %s" -msgstr "Додади %s" - -#: contrib/admin/views/main.py:335 -#, python-format -msgid "Added %s." -msgstr "Додадено %s." - -#: contrib/admin/views/main.py:337 -#, python-format -msgid "Changed %s." -msgstr "Изменета %s." - -#: contrib/admin/views/main.py:339 -#, python-format -msgid "Deleted %s." -msgstr "Избришана %s." - -#: contrib/admin/views/main.py:342 -msgid "No fields changed." -msgstr "Не беше изменето ниедно поле." - -#: contrib/admin/views/main.py:345 -#, python-format -msgid "The %(name)s \"%(obj)s\" was changed successfully." -msgstr "%(name)s \"%(obj)s\" беше успешно изменета." - -#: contrib/admin/views/main.py:353 -#, python-format -msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." -msgstr "" -"%(name)s \"%(obj)s\" беше успешно додадена.Подолу можете повторно да ја " -"уредите." - -#: contrib/admin/views/main.py:391 -#, python-format -msgid "Change %s" -msgstr "Измени %s" - -#: contrib/admin/views/main.py:473 -#, python-format -msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "Еден или повеќе %(fieldname)s во %(name)s: %(obj)s" - -#: contrib/admin/views/main.py:478 -#, python-format -msgid "One or more %(fieldname)s in %(name)s:" -msgstr "Еден или повеќе %(fieldname)s во %(name)s:" - -#: contrib/admin/views/main.py:511 -#, python-format -msgid "The %(name)s \"%(obj)s\" was deleted successfully." -msgstr "%(name)s \"%(obj)s\" беше избришана успешно." - -#: contrib/admin/views/main.py:514 -msgid "Are you sure?" -msgstr "Сигурни сте?" - -#: contrib/admin/views/main.py:536 -#, python-format -msgid "Change history: %s" -msgstr "Историја на измени: %s" - -#: contrib/admin/views/main.py:570 -#, python-format -msgid "Select %s" -msgstr "Изберет %s" - -#: contrib/admin/views/main.py:570 -#, python-format -msgid "Select %s to change" -msgstr "Изберете %s за измена" - -#: contrib/admin/views/main.py:758 -msgid "Database error" -msgstr "Грешка во базата со податоци" - -#: contrib/admin/views/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/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: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 "Збор (до %(maxlength)s)" - -#: contrib/admin/views/doc.py:294 -msgid "Comma-separated integers" -msgstr "Целобројни вредности одделени со запирка" - -#: contrib/admin/views/doc.py:295 -msgid "Date (without time)" -msgstr "Датум (без час)" - -#: contrib/admin/views/doc.py:296 -msgid "Date (with time)" -msgstr "Датум (со час)" - -#: contrib/admin/views/doc.py:297 -msgid "E-mail address" -msgstr "Адреса на е-пошта" - -#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299 -#: contrib/admin/views/doc.py:302 -msgid "File path" -msgstr "Патека на датотека" - -#: contrib/admin/views/doc.py:300 -msgid "Decimal number" -msgstr "Децимален број" - -#: contrib/admin/views/doc.py:306 -msgid "Boolean (Either True, False or None)" -msgstr "Логичка (точно,неточно или празно)" - -#: contrib/admin/views/doc.py:307 -msgid "Relation to parent model" -msgstr "Релација со родителскиот модел" - -#: contrib/admin/views/doc.py:308 -msgid "Phone number" -msgstr "Телефонски број" - -#: contrib/admin/views/doc.py:313 -msgid "Text" -msgstr "Текст" - -#: contrib/admin/views/doc.py:314 -msgid "Time" -msgstr "Час" - -#: contrib/admin/views/doc.py:316 -msgid "U.S. state (two uppercase letters)" -msgstr "Држава во САД (две големи букви)" - -#: contrib/admin/views/doc.py:317 -msgid "XML text" -msgstr "XML текст" - -#: contrib/admin/views/doc.py:343 -#, python-format -msgid "%s does not appear to be a urlpattern object" -msgstr "%s не изгледа дека е url објект" - -#: contrib/admin/views/auth.py:30 -msgid "Add user" -msgstr "Додади корисник" - -#: contrib/admin/views/auth.py:57 -msgid "Password changed successfully." -msgstr "Успешна промена на лозинката." - -#: contrib/admin/views/auth.py:64 -#, python-format -msgid "Change password: %s" -msgstr "Промени лозинка: %s" - -#: newforms/fields.py:101 newforms/fields.py:254 +#: newforms/fields.py:103 newforms/fields.py:256 #, python-format msgid "Ensure this value has at most %d characters." msgstr "Осигурајте се дека оваа вредност има најмногу %d знаци." -#: newforms/fields.py:103 newforms/fields.py:256 +#: newforms/fields.py:105 newforms/fields.py:258 #, python-format msgid "Ensure this value has at least %d characters." msgstr "Осигурајте се дека оваа вредност има најмалку %d знаци." -#: newforms/fields.py:126 core/validators.py:120 -msgid "Enter a whole number." -msgstr "Внеси цел број." - -#: newforms/fields.py:128 +#: newforms/fields.py:130 #, python-format msgid "Ensure this value is less than or equal to %s." msgstr "Осигурајте се дека оваа вредност е помала или еднаква на %s." -#: newforms/fields.py:130 +#: newforms/fields.py:132 #, python-format msgid "Ensure this value is greater than or equal to %s." msgstr "Осигурајте се дека оваа вредност е поголема или еднаква со %s." -#: newforms/fields.py:163 +#: newforms/fields.py:165 msgid "Enter a valid date." msgstr "Внесете правилен датум." -#: newforms/fields.py:190 +#: newforms/fields.py:192 msgid "Enter a valid time." msgstr "Внесете правилно време." -#: newforms/fields.py:226 +#: newforms/fields.py:228 msgid "Enter a valid date/time." msgstr "Внесете правилен датум со време." -#: newforms/fields.py:240 +#: newforms/fields.py:242 msgid "Enter a valid value." msgstr "Внесете правилна вредност." -#: newforms/fields.py:269 core/validators.py:161 -msgid "Enter a valid e-mail address." -msgstr "Внесeте правилна адреса за е-пошта." - -#: newforms/fields.py:287 newforms/fields.py:309 +#: newforms/fields.py:289 newforms/fields.py:311 msgid "Enter a valid URL." msgstr "Внесете правилна адреса." -#: newforms/fields.py:311 +#: newforms/fields.py:313 msgid "This URL appears to be a broken link." msgstr "Оваа адреса изгледа дека не е достапна." -#: newforms/fields.py:359 +#: newforms/fields.py:362 newforms/models.py:165 msgid "Select a valid choice. That choice is not one of the available choices." msgstr "Изберете правилно. Тоа не е едно од можните избори." -#: newforms/fields.py:377 newforms/fields.py:453 +#: newforms/fields.py:380 newforms/fields.py:456 newforms/models.py:182 msgid "Enter a list of values." msgstr "Внесете листа на вредности." -#: newforms/fields.py:386 +#: newforms/fields.py:389 newforms/models.py:188 #, python-format msgid "Select a valid choice. %s is not one of the available choices." msgstr "Внесете правилно. %s не е еден од достапните вредности." -#: template/defaultfilters.py:436 -msgid "yes,no,maybe" -msgstr "да, не, можеби" - -#: 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 беше избришан." - -#: core/validators.py:64 -msgid "This value must contain only letters, numbers and underscores." -msgstr "Оваа вредност смее да има само букви, бројки или долни црти." - -#: core/validators.py:68 -msgid "" -"This value must contain only letters, numbers, underscores, dashes or " -"slashes." -msgstr "Оваа вредност смее да има само букви, бројки, долни црти, црти или коси црти." - -#: core/validators.py:72 -msgid "This value must contain only letters, numbers, underscores or hyphens." -msgstr "Оваа вредност смее да содржи само букви, бројки, долни црти или црти." - -#: core/validators.py:76 -msgid "Uppercase letters are not allowed here." -msgstr "Големи букви не се дозволени." - -#: core/validators.py:80 -msgid "Lowercase letters are not allowed here." -msgstr "Мали букви не се дозволени." - -#: core/validators.py:87 -msgid "Enter only digits separated by commas." -msgstr "Внесете само цифри одделени со запирки." - -#: core/validators.py:99 -msgid "Enter valid e-mail addresses separated by commas." -msgstr "Внесете валидни адреси за е-пошта одделени со запирки." - -#: core/validators.py:103 -msgid "Please enter a valid IP address." -msgstr "Ве молам внесете валидна ИП адреса." - -#: core/validators.py:107 -msgid "Empty values are not allowed here." -msgstr "Празни вредности не се дозволени." - -#: core/validators.py:111 -msgid "Non-numeric characters aren't allowed here." -msgstr "Ненумерички знаци не се дозволени тука." - -#: core/validators.py:115 -msgid "This value can't be comprised solely of digits." -msgstr "Оваа вредност не смее да биде само од цифри." - -#: core/validators.py:124 -msgid "Only alphabetical characters are allowed here." -msgstr "Дозволени се само букви." - -#: core/validators.py:139 -msgid "Year must be 1900 or later." -msgstr "Годината мора да биде 1900 или покасно." - -#: core/validators.py:143 -#, python-format -msgid "Invalid date: %s." -msgstr "Неправилен датум: %s." - -#: core/validators.py:152 -msgid "Enter a valid time in HH:MM format." -msgstr "Внесете правилно време во форматот HH:MM." - -#: core/validators.py:177 -msgid "" -"Upload a valid image. The file you uploaded was either not an image or a " -"corrupted image." -msgstr "" -"Качете валидна фотографија. Датотеката која ја качивте или не беше " -"фотографија или беше расипана датотеката." - -#: core/validators.py:184 -#, python-format -msgid "The URL %s does not point to a valid image." -msgstr "Адресата %s не покажува кон валидна фотографија." - -#: core/validators.py:188 -#, python-format -msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." -msgstr "" -"Телефонските броеви мора да бидат во XXX-XXX-XXXX форматот. „%s“ не е " -"валиден." - -#: core/validators.py:196 -#, python-format -msgid "The URL %s does not point to a valid QuickTime video." -msgstr "Адресата „%s“ не покажува кон QuickTime видео." - -#: core/validators.py:200 -msgid "A valid URL is required." -msgstr "Задолжителна е правилна адреса." - -#: core/validators.py:214 -#, python-format -msgid "" -"Valid HTML is required. Specific errors are:\n" -"%s" -msgstr "" -"Задолжителен е правилен HTML. Грешките се:\n" -"%s" - -#: core/validators.py:221 -#, python-format -msgid "Badly formed XML: %s" -msgstr "Неправилно формиран XML: %s" - -#: core/validators.py:238 -#, python-format -msgid "Invalid URL: %s" -msgstr "Неправилна адреса: %s" - -#: core/validators.py:243 core/validators.py:245 -#, python-format -msgid "The URL %s is a broken link." -msgstr "Адресата %s е скршена врска." - -#: core/validators.py:251 -msgid "Enter a valid U.S. state abbreviation." -msgstr "Внесете правилна скратеница за држава во САД." - -#: core/validators.py:265 -#, python-format -msgid "Watch your mouth! The word %s is not allowed here." -msgid_plural "Watch your mouth! The words %s are not allowed here." -msgstr[0] "Внимавајте на јазикот. Тука не е дозволен зборот %s." -msgstr[1] "Внимавајте на јазикот. Тука не се дозволени зборовите %s." - -#: core/validators.py:272 -#, python-format -msgid "This field must match the '%s' field." -msgstr "Ова поле мора да соодејствува со полето „%s“." - -#: core/validators.py:291 -msgid "Please enter something for at least one field." -msgstr "Ве молам внесете нешто во барем едно поле." - -#: core/validators.py:300 core/validators.py:311 -msgid "Please enter both fields or leave them both empty." -msgstr "Ве молам внесете во двете полиња или оставете ги двете празни." - -#: core/validators.py:318 -#, python-format -msgid "This field must be given if %(field)s is %(value)s" -msgstr "Ова поле мора да биде зададено ако %(field)s е %(value)s" - -#: core/validators.py:330 -#, python-format -msgid "This field must be given if %(field)s is not %(value)s" -msgstr "Ова поле мора да биде зададено ако %(field)s не е %(value)s" - -#: core/validators.py:349 -msgid "Duplicate values are not allowed." -msgstr "Дупликат вредности не се дозволени." - -#: core/validators.py:364 -#, python-format -msgid "This value must be between %s and %s." -msgstr "Оваа вредноста мора да биде помеѓу %s и %s." - -#: core/validators.py:366 -#, python-format -msgid "This value must be at least %s." -msgstr "Оваа вредноста мора да биде најмалку %s." - -#: core/validators.py:368 -#, python-format -msgid "This value must be no more than %s." -msgstr "Оваа вредност не смее да биде поголема од %s." - -#: core/validators.py:404 -#, python-format -msgid "This value must be a power of %s." -msgstr "Оваа вредноста мора да биде степен од %s." - -#: core/validators.py:415 -msgid "Please enter a valid decimal number." -msgstr "Ве молам внесете правилен децимален број." - -#: core/validators.py:419 -#, python-format -msgid "Please enter a valid decimal number with at most %s total digit." -msgid_plural "Please enter a valid decimal number with at most %s total digits." -msgstr[0] "Ве молам внесете правилен децимален број со најмногу %s цифрa." -msgstr[1] "Ве молам внесете правилен децимален број со најмногу %s вкупно цифри." - -#: core/validators.py:422 -#, python-format -msgid "Please enter a valid decimal number with a whole part of at most %s digit." -msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits." -msgstr[0] "" -"Ве молам внесете правилен децимален број кој во целиот број има најмногу %s " -"цифра." -msgstr[1] "" -"Ве молам внесете правилен децимален број кој во целиот број има најмногу %s " -"цифри." - -#: core/validators.py:425 -#, 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:435 -#, python-format -msgid "Make sure your uploaded file is at least %s bytes big." -msgstr "Потврдете дека качената датотека има најмалку %s бајти." - -#: core/validators.py:436 -#, python-format -msgid "Make sure your uploaded file is at most %s bytes big." -msgstr "Потврдете дека качената датотека има најмногу %s бајти." - -#: core/validators.py:453 -msgid "The format for this field is wrong." -msgstr "Форматот за ова поле е грешен." - -#: core/validators.py:468 -msgid "This field is invalid." -msgstr "Ова поле не е правилно." - -#: core/validators.py:504 -#, python-format -msgid "Could not retrieve anything from %s." -msgstr "Неможев да извадам ништо од %s." - -#: core/validators.py:507 -#, python-format -msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." -msgstr "Адресата %(url)s врати неправилно заглавје Content-Type „%(contenttype)s“." - -#: core/validators.py:540 -#, python-format -msgid "" -"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " -"\"%(start)s\".)" -msgstr "" -"Ве молам затворете го отворениот %(tag)s таг од линијата %(line)s. (линијата " -"почнува со „%(start)s“.)" - -#: core/validators.py:544 -#, 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:549 -#, python-format -msgid "" -"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" -"(start)s\".)" -msgstr "" -"„%(attr)s“ на линија %(line)s е неправилен атрибут. (линијата започнува со „%" -"(start)s“.)" - -#: core/validators.py:554 -#, python-format -msgid "" -"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" -"(start)s\".)" -msgstr "" -"„<%(tag)s>“ на линија %(line)s е неправилен таг. (линијата започнува со „%" -"(start)s“.)" - -#: core/validators.py:558 -#, 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:563 -#, python-format -msgid "" -"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " -"starts with \"%(start)s\".)" -msgstr "Атрибутот „%(attr)s“ на линијата %(line)s има неправилна вредност (линијата започнува со „%(start)s“)." - diff --git a/django/conf/locale/no/LC_MESSAGES/django.mo b/django/conf/locale/no/LC_MESSAGES/django.mo index ee2152b5e1..7048e3079d 100644 Binary files a/django/conf/locale/no/LC_MESSAGES/django.mo and b/django/conf/locale/no/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/no/LC_MESSAGES/django.po b/django/conf/locale/no/LC_MESSAGES/django.po index 427879a8f3..ea388cfd81 100644 --- a/django/conf/locale/no/LC_MESSAGES/django.po +++ b/django/conf/locale/no/LC_MESSAGES/django.po @@ -1,4 +1,4 @@ -# SOME DESCRIPTIVE TITLE. +# translation of django.po to # Copyright (C) 2005 and beyond # This file is distributed under the same license as the PACKAGE package. # Espen Grindhaug , Nov 2005. @@ -6,74 +6,73 @@ # msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" +"Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-05-16 10:12+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Espen Grndhaug \n" -"Language-Team: Norwegian\n" +"PO-Revision-Date: 2007-04-27 06:48+0200\n" +"Last-Translator: \n" +"Language-Team: \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" #: contrib/comments/models.py:67 contrib/comments/models.py:166 -#, fuzzy msgid "object ID" -msgstr "Vis objekt ID" +msgstr "objekt ID" #: contrib/comments/models.py:68 msgid "headline" -msgstr "" +msgstr "overskrift" #: contrib/comments/models.py:69 contrib/comments/models.py:90 #: contrib/comments/models.py:167 -#, fuzzy msgid "comment" -msgstr "innhold" +msgstr "kommentar" #: contrib/comments/models.py:70 msgid "rating #1" -msgstr "" +msgstr "rangering #1 " #: contrib/comments/models.py:71 msgid "rating #2" -msgstr "" +msgstr "rangering #2" #: contrib/comments/models.py:72 msgid "rating #3" -msgstr "" +msgstr "rangering #3" #: contrib/comments/models.py:73 msgid "rating #4" -msgstr "" +msgstr "rangering #4" #: contrib/comments/models.py:74 msgid "rating #5" -msgstr "" +msgstr "rangering #5" #: contrib/comments/models.py:75 msgid "rating #6" -msgstr "" +msgstr "rangering #6" #: contrib/comments/models.py:76 msgid "rating #7" -msgstr "" +msgstr "rangering #7" #: contrib/comments/models.py:77 msgid "rating #8" -msgstr "" +msgstr "rangering #8" #: contrib/comments/models.py:82 msgid "is valid rating" -msgstr "" +msgstr "er gyldig rangering" #: contrib/comments/models.py:83 contrib/comments/models.py:169 msgid "date/time submitted" -msgstr "" +msgstr "dato/tid for innsendelse" #: contrib/comments/models.py:84 contrib/comments/models.py:170 msgid "is public" -msgstr "" +msgstr "er tilgjengelig for alle" #: contrib/comments/models.py:85 contrib/admin/views/doc.py:289 msgid "IP address" @@ -81,23 +80,21 @@ msgstr "IP adresse" #: contrib/comments/models.py:86 msgid "is removed" -msgstr "" +msgstr "er fjernet" #: contrib/comments/models.py:86 msgid "" "Check this box if the comment is inappropriate. A \"This comment has been " "removed\" message will be displayed instead." -msgstr "" +msgstr "Aktiver denne avkryssningsboksen hvis kommentaren er upasende. Beskjeden \"Denne kommentaren er blitt fjernet\" vil bli vist istedet." #: contrib/comments/models.py:91 -#, fuzzy msgid "comments" -msgstr "innhold" +msgstr "kommentarer" #: contrib/comments/models.py:131 contrib/comments/models.py:207 -#, fuzzy msgid "Content object" -msgstr "innholds type" +msgstr "innholdsobjekt" #: contrib/comments/models.py:159 #, python-format @@ -108,101 +105,97 @@ msgid "" "\n" "http://%(domain)s%(url)s" msgstr "" +"Sendt av %(user)s på %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" #: contrib/comments/models.py:168 -#, fuzzy msgid "person's name" -msgstr "fornavn" +msgstr "personens navn" #: contrib/comments/models.py:171 -#, fuzzy msgid "ip address" msgstr "IP adresse" #: contrib/comments/models.py:173 msgid "approved by staff" -msgstr "" +msgstr "godkjent av moderator" #: contrib/comments/models.py:176 -#, fuzzy msgid "free comment" -msgstr "tillat kommentarer" +msgstr "åpen kommentar" #: contrib/comments/models.py:177 -#, fuzzy msgid "free comments" -msgstr "tillat kommentarer" +msgstr "åpne kommentarer" #: contrib/comments/models.py:233 msgid "score" -msgstr "" +msgstr "poeng" #: contrib/comments/models.py:234 -#, fuzzy msgid "score date" -msgstr "utløpsdato" +msgstr "poeng dato" #: contrib/comments/models.py:237 msgid "karma score" -msgstr "" +msgstr "karma poeng" #: contrib/comments/models.py:238 msgid "karma scores" -msgstr "" +msgstr "karma poeng" #: contrib/comments/models.py:242 #, python-format msgid "%(score)d rating by %(user)s" -msgstr "" +msgstr "%(score)d rangering av %(user)s" #: contrib/comments/models.py:258 -#, fuzzy, python-format +#, python-format msgid "" "This comment was flagged by %(user)s:\n" "\n" "%(text)s" msgstr "" -"Denne kommentaren er skrevet med lite omtanke:\n" +"Denne kommentaren er flagget av %(user)s:\n" "\n" "%(text)s" #: contrib/comments/models.py:265 -#, fuzzy msgid "flag date" -msgstr "flatside" +msgstr "flagg dato" #: contrib/comments/models.py:268 -#, fuzzy msgid "user flag" -msgstr "Bruker" +msgstr "brukerflag" #: contrib/comments/models.py:269 -#, fuzzy msgid "user flags" -msgstr "Brukere" +msgstr "brukerflag" #: contrib/comments/models.py:273 #, python-format msgid "Flag by %r" -msgstr "" +msgstr "Flagg med %r" #: contrib/comments/models.py:278 -#, fuzzy msgid "deletion date" -msgstr "sesjon data" +msgstr "fjernet dato" #: contrib/comments/models.py:280 msgid "moderator deletion" -msgstr "" +msgstr "fjernet av moderator" #: contrib/comments/models.py:281 msgid "moderator deletions" -msgstr "" +msgstr "fjernet av moderator" #: contrib/comments/models.py:285 #, python-format msgid "Moderator deletion by %r" -msgstr "" +msgstr "Fjernet av moderator med %r" #: contrib/comments/views/karma.py:19 msgid "Anonymous users cannot vote" @@ -214,16 +207,14 @@ msgstr "Ikke gyldig kommentar ID" #: contrib/comments/views/karma.py:25 msgid "No voting for yourself" -msgstr "Du kan ikke stemme selv" +msgstr "Du kan ikke stemme på deg selv" #: contrib/comments/views/comments.py:28 -#, fuzzy -msgid "" -"This rating is required because you've entered at least one other rating." -msgstr "Denne bla bla.." +msgid "This rating is required because you've entered at least one other rating." +msgstr "Denne rangeringen er påkrevd fordi du har rangert en eller flere ting fra før " #: contrib/comments/views/comments.py:112 -#, fuzzy, python-format +#, python-format msgid "" "This comment was posted by a user who has posted fewer than %(count)s " "comment:\n" @@ -246,13 +237,13 @@ msgstr[1] "" "%(text)s" #: contrib/comments/views/comments.py:117 -#, fuzzy, python-format +#, python-format msgid "" "This comment was posted by a sketchy user:\n" "\n" "%(text)s" msgstr "" -"Denne kommentaren er skrevet med lite omtanke:\n" +"Denne kommentaren er skrevet av en upålitelig bruker:\n" "\n" "%(text)s" @@ -281,8 +272,7 @@ msgstr "Skjemaet hadde en ugyldig verdi - objekt IDen var ugyldig" #: contrib/comments/views/comments.py:257 #: contrib/comments/views/comments.py:321 msgid "The comment form didn't provide either 'preview' or 'post'" -msgstr "" -"Kommentar skjemaet returnerte ikke et 'forhåndsvisning' eller 'post' objekt" +msgstr "Kommentar skjemaet returnerte ikke et 'forhåndsvisning' eller 'post' objekt" #: contrib/comments/templates/comments/form.html:6 #: contrib/comments/templates/comments/form.html:8 @@ -296,9 +286,8 @@ msgid "Password:" msgstr "Passord:" #: contrib/comments/templates/comments/form.html:6 -#, fuzzy msgid "Forgotten your password?" -msgstr "Endre passord" +msgstr "Har du glemt passordet ditt ?" #: contrib/comments/templates/comments/form.html:8 #: contrib/admin/templates/admin/object_history.html:3 @@ -323,38 +312,35 @@ msgstr "Log ut" #: contrib/comments/templates/comments/form.html:12 msgid "Ratings" -msgstr "" +msgstr "Rangeringer" #: contrib/comments/templates/comments/form.html:12 #: contrib/comments/templates/comments/form.html:23 msgid "Required" -msgstr "" +msgstr "Påkrevd" #: contrib/comments/templates/comments/form.html:12 #: contrib/comments/templates/comments/form.html:23 msgid "Optional" -msgstr "" +msgstr "Valgfri" #: contrib/comments/templates/comments/form.html:23 msgid "Post a photo" -msgstr "" +msgstr "Send et foto" #: contrib/comments/templates/comments/form.html:27 #: contrib/comments/templates/comments/freeform.html:5 -#, fuzzy msgid "Comment:" -msgstr "tillat kommentarer" +msgstr "Kommentar:" #: contrib/comments/templates/comments/form.html:32 #: contrib/comments/templates/comments/freeform.html:9 -#, fuzzy msgid "Preview comment" -msgstr "tillat kommentarer" +msgstr "Forhåndvis kommentar" #: contrib/comments/templates/comments/freeform.html:4 -#, fuzzy msgid "Your name:" -msgstr "brukernavn" +msgstr "Ditt navn:" #: contrib/admin/filterspecs.py:40 #, python-format @@ -416,7 +402,7 @@ msgstr "objekt repr" #: contrib/admin/models.py:21 msgid "action flag" -msgstr "handlings flagg" +msgstr "handlingsflagg" #: contrib/admin/models.py:22 msgid "change message" @@ -424,11 +410,11 @@ msgstr "endre melding" #: contrib/admin/models.py:25 msgid "log entry" -msgstr "logg notis" +msgstr "logg post" #: contrib/admin/models.py:26 msgid "log entries" -msgstr "logg innlegg" +msgstr "logg poster" #: contrib/admin/templatetags/admin_list.py:228 msgid "All dates" @@ -440,8 +426,8 @@ msgid "" "Please enter a correct username and password. Note that both fields are case-" "sensitive." msgstr "" -"Vær snill å angi korrekt brukernavn og passord. La merke til at små og " -"store bokstaver er betraktet ulik." +"Vennligst angi korrekt brukernavn og passord. Merk at små og " +"store bokstaver er betraktet ulikt." #: contrib/admin/views/decorators.py:23 #: contrib/admin/templates/admin/login.html:25 @@ -452,18 +438,15 @@ msgstr "Logg inn" msgid "" "Please log in again, because your session has expired. Don't worry: Your " "submission has been saved." -msgstr "" -"Du må logge inn igjen, fordi sesjonen din har gått ut på dato, men ikke ikke " -"bekjymr deg informasjonen du sendte ble lagret." +msgstr "Du må logge inn igjen, fordi økten din har gått ut, men innlegget ditt ble lagret." #: contrib/admin/views/decorators.py:68 msgid "" "Looks like your browser isn't configured to accept cookies. Please enable " "cookies, reload this page, and try again." msgstr "" -"Det ser ut som om nettleseren din ikke vill ta i mot informasjonskapsler " -"('cookies'). Vennligst omkonfigurer nettleseren din, last siden på ny og " -"prøv igjen." +"Det ser ut som om nettleseren din ikke støtter informasjonskapsler " +"('cookies'). Vennligst konfigurer nettleseren din, og prøv igjen." #: contrib/admin/views/decorators.py:82 msgid "Usernames cannot contain the '@' character." @@ -500,7 +483,7 @@ msgstr "Ny %s" #: contrib/admin/views/main.py:336 #, python-format msgid "Added %s." -msgstr "Lagt til %s" +msgstr "La til %s" #: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338 #: contrib/admin/views/main.py:340 @@ -528,8 +511,7 @@ msgstr "%(name)s \"%(obj)s\" ble endret." #: contrib/admin/views/main.py:354 #, python-format -msgid "" -"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." msgstr "%(name)s \"%(obj)s\" ble endret. Du kan endre det igjen under." #: contrib/admin/views/main.py:392 @@ -742,8 +724,8 @@ msgid "" "There's been an error. It's been reported to the site administrators via e-" "mail and should be fixed shortly. Thanks for your patience." msgstr "" -"Det har vært en feil. Feilen er blitt rapportert til administrator via e-" -"mail, og vill bli fikset snart. Takk for din tålmodighet." +"Det har oppstått en feil. Feilen er blitt rapportert til administrator via e-" +"post, og vil bli fikset snart. Takk for din tålmodighet." #: contrib/admin/templates/admin/404.html:4 #: contrib/admin/templates/admin/404.html:8 @@ -909,7 +891,7 @@ msgstr "Tilbakestill mitt passord" #: contrib/admin/templates/registration/logged_out.html:8 msgid "Thanks for spending some quality time with the Web site today." -msgstr "Takk for å bruke tid på internett siden i dag." +msgstr "Takk for at du valgte å bruke kvalitetstid på nettstedet idag." #: contrib/admin/templates/registration/logged_out.html:10 msgid "Log in again" @@ -954,8 +936,7 @@ msgstr "Endre passord" #: contrib/admin/templates/registration/password_reset_email.html:2 msgid "You're receiving this e-mail because you requested a password reset" -msgstr "" -"Du har mottatt denne e-posten fordi du ba om å tilbakestille passordet ditt" +msgstr "Du har mottatt denne e-posten fordi du ba om å tilbakestille passordet ditt" #: contrib/admin/templates/registration/password_reset_email.html:3 #, python-format @@ -1002,6 +983,12 @@ msgid "" "as \"internal\" (talk to your system administrator if you aren't sure if\n" "your computer is \"internal\").

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

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

                              \n" #: contrib/admin/templates/admin_doc/bookmarklets.html:19 msgid "Documentation for this page" @@ -1033,8 +1020,7 @@ msgstr "Endre dette objektet (åpnes i dette vinduet)" #: contrib/admin/templates/admin_doc/bookmarklets.html:26 msgid "Jumps to the admin page for pages that represent a single object." -msgstr "" -"Hopp til administrasjonsiden for sidene som representerer et enkelt objekt." +msgstr "Hopp til administrasjonsiden for sidene som representerer et enkelt objekt." #: contrib/admin/templates/admin_doc/bookmarklets.html:28 msgid "Edit this object (new window)" @@ -1069,7 +1055,7 @@ msgid "" "This should be an absolute path, excluding the domain name. Example: '/" "events/search/'." msgstr "" -"Denne burde vær en fullstendig sti, uten domene navnet. Foreksempel: '/" +"Dette burde vært en fullstendig sti, uten domene navnet. Foreksempel: '/" "nyheter/les/" #: contrib/redirects/models.py:9 @@ -1081,7 +1067,7 @@ msgid "" "This can be either an absolute path (as above) or a full URL starting with " "'http://'." msgstr "" -"Denne kan enten være en fullstendig sti (som over), eller en hel " +"Dette kan enten være en fullstendig sti (som over), eller en hel " "internettadresse som starter med 'http://'" #: contrib/redirects/models.py:12 @@ -1093,10 +1079,8 @@ msgid "redirects" msgstr "omadresserelser" #: contrib/flatpages/models.py:8 -msgid "" -"Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "" -"Eksempel: '/om/kontakt/'. Vær sikker på at du har en skråstrek forran og bak." +msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "Eksempel: '/om/kontakt/'. Vær sikker på at du har en skråstrek forran og bak." #: contrib/flatpages/models.py:9 msgid "title" @@ -1186,7 +1170,7 @@ msgstr "passord" #: contrib/auth/models.py:59 msgid "Use '[algo]$[salt]$[hexdigest]'" -msgstr "" +msgstr "Bruk '[algo]$[salt]$[hexdigest]'" #: contrib/auth/models.py:60 msgid "staff status" @@ -1256,7 +1240,7 @@ msgstr "Melding" msgid "" "Your Web browser doesn't appear to have cookies enabled. Cookies are " "required for logging in." -msgstr "" +msgstr "Din nettleser ser ikkeut til å støtte informasjonskapsler (cookies). Informasjonskapsler er påkrevd for å logge inn." #: contrib/contenttypes/models.py:25 msgid "python model class name" @@ -1698,8 +1682,7 @@ msgstr "Internettadressen %s peker ikke til et godkjent bilde." #: core/validators.py:159 #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." -msgstr "" -"Telefon nummeret må være i XXX-XXX-XXXX format. \"%s\" er ikke godkjent." +msgstr "Telefon nummeret må være i XXX-XXX-XXXX format. \"%s\" er ikke godkjent." #: core/validators.py:167 #, python-format @@ -1732,7 +1715,7 @@ msgstr "Ikke godkjent URL: %s" #: core/validators.py:206 core/validators.py:208 #, python-format msgid "The URL %s is a broken link." -msgstr "Internettadresse fører til en side som ikke virker." +msgstr "Internettadresse %s fører til en side som ikke virker." #: core/validators.py:214 msgid "Enter a valid U.S. state abbreviation." @@ -1784,30 +1767,26 @@ msgstr "Vennligst skriv inn et godkjent desimal tall." #: core/validators.py:349 #, python-format msgid "Please enter a valid decimal number with at most %s total digit." -msgid_plural "" -"Please enter a valid decimal number with at most %s total digits." +msgid_plural "Please enter a valid decimal number with at most %s total digits." msgstr[0] "Skriv inn et desimal tall med maksimum %s total antall tall." msgstr[1] "Skriv inn et desimal tall med maksimum %s total antall tall." #: core/validators.py:352 #, python-format msgid "Please enter a valid decimal number with at most %s decimal place." -msgid_plural "" -"Please enter a valid decimal number with at most %s decimal places." +msgid_plural "Please enter a valid decimal number with at most %s decimal places." msgstr[0] "Skriv inn et desimal tall med maksimum %s tall bak komma. " msgstr[1] "Skriv inn et desimal tall med maksimum %s tall bak komma. " #: core/validators.py:362 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." -msgstr "" -"Vær sikker på at fila du prøver å laste opp er minimum %s bytes stor." +msgstr "Vær sikker på at fila du prøver å laste opp er minimum %s bytes stor." #: core/validators.py:363 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." -msgstr "" -"Vær sikker på at fila du prøver å laste opp er maksimum %s bytes stor." +msgstr "Vær sikker på at fila du prøver å laste opp er maksimum %s bytes stor." #: core/validators.py:376 msgid "The format for this field is wrong." @@ -1824,8 +1803,7 @@ msgstr "Klarte ikke å motta noe fra %s." #: core/validators.py:429 #, python-format -msgid "" -"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." msgstr "" "Internettadressen %(url)s returnerte en ikke godkjent Content-Type '%" "(contenttype)s'." @@ -1881,7 +1859,7 @@ msgid "" "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " "starts with \"%(start)s\".)" msgstr "" -"\"%(attr)s\" tillegg på linje $(line)s har en ikke godkjent verdi. (Linjen " +"\"%(attr)s\" tillegg på linje %(line)s har en ikke godkjent verdi. (Linjen " "starter med \"%(start)s\".)" #: db/models/manipulators.py:302 @@ -1892,7 +1870,7 @@ msgstr "%(object)s med %(type)s finnes allerede for angitt %(field)s." #: db/models/fields/__init__.py:40 #, python-format msgid "%(optname)s with this %(fieldname)s already exists." -msgstr "$(optname)s med %(fieldname)s finnes allerede." +msgstr "%(optname)s med %(fieldname)s finnes allerede." #: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265 #: db/models/fields/__init__.py:542 db/models/fields/__init__.py:553 @@ -1926,16 +1904,13 @@ msgid "Separate multiple IDs with commas." msgstr "Separer Id-ene med kommaer." #: db/models/fields/related.py:581 -msgid "" -"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr "" -"Hold nede \"Control\", eller \"Command\" på en Mac, for å velge mere enn en." +msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "Hold nede \"Control\", eller \"Command\" på en Mac, for å velge mere enn en." #: db/models/fields/related.py:625 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." -msgid_plural "" -"Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid." msgstr[0] "Skriv inn gyldige %(self)s ID-er. Verdien %(value)r er ikke gyldig." msgstr[1] "Skriv inn gyldige %(self)s ID-er. Verdiene %(value)r er ikke gyldige." diff --git a/django/conf/locale/no/LC_MESSAGES/djangojs.mo b/django/conf/locale/no/LC_MESSAGES/djangojs.mo index 4b23aba4e0..da2854f72e 100644 Binary files a/django/conf/locale/no/LC_MESSAGES/djangojs.mo and b/django/conf/locale/no/LC_MESSAGES/djangojs.mo differ diff --git a/django/conf/locale/no/LC_MESSAGES/djangojs.po b/django/conf/locale/no/LC_MESSAGES/djangojs.po index c6087646e0..ab3d3b965d 100644 --- a/django/conf/locale/no/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/no/LC_MESSAGES/djangojs.po @@ -1,19 +1,20 @@ -# SOME DESCRIPTIVE TITLE. +# translation of djangojs.po to # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Espen Grindhaug , 2006. # msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" +"Project-Id-Version: djangojs\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-12-09 11:51+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Espen Grindhaug \n" -"Language-Team: no\n" +"PO-Revision-Date: 2007-04-27 06:51+0200\n" +"Last-Translator: \n" +"Language-Team: \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" #: contrib/admin/media/js/SelectFilter2.js:33 #, perl-format @@ -21,7 +22,6 @@ msgid "Available %s" msgstr "%s er tilgjengelige" #: contrib/admin/media/js/SelectFilter2.js:41 -#, fuzzy msgid "Choose all" msgstr "Velg alle" @@ -116,3 +116,4 @@ msgstr "I går" #: contrib/admin/media/js/admin/DateTimeShortcuts.js:164 msgid "Tomorrow" msgstr "I morgen" + diff --git a/django/conf/locale/pl/LC_MESSAGES/django.mo b/django/conf/locale/pl/LC_MESSAGES/django.mo index d132fc114e..1aa7e08dd4 100644 Binary files a/django/conf/locale/pl/LC_MESSAGES/django.mo and b/django/conf/locale/pl/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/pl/LC_MESSAGES/django.po b/django/conf/locale/pl/LC_MESSAGES/django.po index 61fc4d0a90..7e7ccb850f 100644 --- a/django/conf/locale/pl/LC_MESSAGES/django.po +++ b/django/conf/locale/pl/LC_MESSAGES/django.po @@ -1,21 +1,775 @@ +# translation of django.po to Polish # Polish .po file. -# Copyright (C) 2006 Krzysztof Kajkowski # This file is distributed under the same license as the django package. -# Krzysztof Kajkowski , 2006. -# cayco , 2006. -# -# msgid "" msgstr "" -"Project-Id-Version: 0.1\n" +"Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-05-16 10:13+0200\n" -"PO-Revision-Date: 2006-02-21 11:10+0100\n" -"Last-Translator: Piotr Maliński \n" +"POT-Creation-Date: 2007-05-08 20:19+0200\n" +"PO-Revision-Date: 2007-05-08 20:29+0200\n" +"Last-Translator: Michal Chruszcz \n" "Language-Team: Polish \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" + +#: oldforms/__init__.py:357 db/models/fields/__init__.py:117 +#: db/models/fields/__init__.py:274 db/models/fields/__init__.py:612 +#: db/models/fields/__init__.py:623 newforms/models.py:178 +#: newforms/fields.py:80 newforms/fields.py:376 newforms/fields.py:452 +#: newforms/fields.py:463 +msgid "This field is required." +msgstr "To pole jest wymagane." + +#: 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] "Upewnij się, że tekst ma mniej niż %s znak." +msgstr[1] "Upewnij się, że tekst ma mniej niż %s znaków." + +#: oldforms/__init__.py:397 +msgid "Line breaks are not allowed here." +msgstr "Znaki nowej linii są tutaj niedopuszczalne." + +#: 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 "Wybierz poprawną opcję; '%(data)s' nie jest wśród %(choices)s." + +#: oldforms/__init__.py:577 newforms/widgets.py:180 +#: contrib/admin/filterspecs.py:150 +msgid "Unknown" +msgstr "Nieznany" + +#: oldforms/__init__.py:577 newforms/widgets.py:180 +#: contrib/admin/filterspecs.py:143 +msgid "Yes" +msgstr "Tak" + +#: oldforms/__init__.py:577 newforms/widgets.py:180 +#: contrib/admin/filterspecs.py:143 +msgid "No" +msgstr "Nie" + +#: 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 "Nie wysłano żadnego pliku. Sprawdź typ kodowania formularza." + +#: oldforms/__init__.py:674 +msgid "The submitted file is empty." +msgstr "Wysłany plik jest pusty." + +#: oldforms/__init__.py:730 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "Proszę wpisać liczbę całkowitą z zakresu od -32 768 do 32 767" + +#: oldforms/__init__.py:740 +msgid "Enter a positive number." +msgstr "Proszę wpisać liczbę dodatnią." + +#: oldforms/__init__.py:750 +msgid "Enter a whole number between 0 and 32,767." +msgstr "Proszę wpisać liczbę całkowitą z zakresu od 0 do 32 767" + +#: db/models/manipulators.py:307 +#, fuzzy, python-format +msgid "%(object)s with this %(type)s already exists for the given %(field)s." +msgstr "%(object)s z %(type)s już istnieje dla %(field)s." + +#: db/models/manipulators.py:308 contrib/admin/views/main.py:338 +#: contrib/admin/views/main.py:340 contrib/admin/views/main.py:342 +msgid "and" +msgstr "i" + +#: db/models/fields/__init__.py:42 +#, fuzzy, python-format +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "Już istnieje %(optname)s z %(fieldname)s." + +#: db/models/fields/__init__.py:369 +msgid "This value must be an integer." +msgstr "Ta wartość musi być liczbą całkowitą." + +#: db/models/fields/__init__.py:404 +msgid "This value must be either True or False." +msgstr "Ta wartość musi być logiczna (True, False - prawda lub fałsz)." + +#: db/models/fields/__init__.py:425 +msgid "This field cannot be null." +msgstr "To pole nie może być puste." + +#: db/models/fields/__init__.py:459 core/validators.py:148 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Proszę wpisać poprawną datę w formacie RRRR-MM-DD." + +#: db/models/fields/__init__.py:528 core/validators.py:157 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "Wprowadź poprawną datę i godzinę w formacie RRRR-MM-DD GG:MM." + +#: db/models/fields/__init__.py:632 +msgid "Enter a valid filename." +msgstr "Wpisz poprawną nazwę pliku." + +#: db/models/fields/__init__.py:753 +msgid "This value must be either None, True or False." +msgstr "Ta wartość musi być jedną z None (żadne), True (prawda) lub False (fałsz)." + +#: db/models/fields/related.py:53 +#, python-format +msgid "Please enter a valid %s." +msgstr "Proszę wpisać poprawne %s." + +#: db/models/fields/related.py:642 +msgid "Separate multiple IDs with commas." +msgstr "Oddziel identyfikatory przecinkami." + +#: db/models/fields/related.py:644 +msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" +"Przytrzymaj wciśnięty klawisz \"Ctrl\" lub \"Command\" na Mac'u aby " +"zaznaczyć więcej niż jeden wybór." + +#: 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] "" +"Proszę podać poprawne identyfikatory %(self)s. Wartość %(value)r jest " +"niepoprawna." +msgstr[1] "" +"Proszę podać poprawne identyfikatory %(self)s. Wartości %(value)r są " +"niepoprawne." + +#: conf/global_settings.py:39 +msgid "Arabic" +msgstr "Arabski" + +#: conf/global_settings.py:40 +msgid "Bengali" +msgstr "Bengalski" + +#: conf/global_settings.py:41 +msgid "Catalan" +msgstr "Kataloński" + +#: conf/global_settings.py:42 +msgid "Czech" +msgstr "Czeski" + +#: conf/global_settings.py:43 +msgid "Welsh" +msgstr "Walijski" + +#: conf/global_settings.py:44 +msgid "Danish" +msgstr "Duński" + +#: conf/global_settings.py:45 +msgid "German" +msgstr "Niemiecki" + +#: conf/global_settings.py:46 +msgid "Greek" +msgstr "Grecki" + +#: conf/global_settings.py:47 +msgid "English" +msgstr "Angielski" + +#: conf/global_settings.py:48 +msgid "Spanish" +msgstr "Hiszpański" + +#: conf/global_settings.py:49 +msgid "Argentinean Spanish" +msgstr "Hiszpański argentyński" + +#: conf/global_settings.py:50 +msgid "Finnish" +msgstr "Fiński" + +#: conf/global_settings.py:51 +msgid "French" +msgstr "Francuski" + +#: conf/global_settings.py:52 +msgid "Galician" +msgstr "Galicyjski" + +#: conf/global_settings.py:53 +msgid "Hungarian" +msgstr "Węgierski" + +#: conf/global_settings.py:54 +msgid "Hebrew" +msgstr "Hebrajski" + +#: conf/global_settings.py:55 +msgid "Icelandic" +msgstr "Islandzki" + +#: conf/global_settings.py:56 +msgid "Italian" +msgstr "Włoski" + +#: conf/global_settings.py:57 +msgid "Japanese" +msgstr "Japoński" + +#: conf/global_settings.py:58 +msgid "Korean" +msgstr "Koreański" + +#: conf/global_settings.py:59 +msgid "Kannada" +msgstr "Kannada" + +#: conf/global_settings.py:60 +msgid "Latvian" +msgstr "Łotewski" + +#: conf/global_settings.py:61 +msgid "Macedonian" +msgstr "Macedoński" + +#: conf/global_settings.py:62 +msgid "Dutch" +msgstr "Holenderski" + +#: conf/global_settings.py:63 +msgid "Norwegian" +msgstr "Norweski" + +#: conf/global_settings.py:64 +msgid "Polish" +msgstr "Polski" + +#: conf/global_settings.py:65 +msgid "Portugese" +msgstr "Portugalski" + +#: conf/global_settings.py:66 +msgid "Brazilian" +msgstr "Brazylijski" + +#: conf/global_settings.py:67 +msgid "Romanian" +msgstr "Rumuński" + +#: conf/global_settings.py:68 +msgid "Russian" +msgstr "Rosyjski" + +#: conf/global_settings.py:69 +msgid "Slovak" +msgstr "Słowacki" + +#: conf/global_settings.py:70 +msgid "Slovenian" +msgstr "Słoweński" + +#: conf/global_settings.py:71 +msgid "Serbian" +msgstr "Serbski" + +#: conf/global_settings.py:72 +msgid "Swedish" +msgstr "Szwedzki" + +#: conf/global_settings.py:73 +msgid "Tamil" +msgstr "Tamilski" + +#: conf/global_settings.py:74 +msgid "Telugu" +msgstr "Telugu" + +#: conf/global_settings.py:75 +msgid "Turkish" +msgstr "Turecki" + +#: conf/global_settings.py:76 +msgid "Ukrainian" +msgstr "Ukraiński" + +#: conf/global_settings.py:77 +msgid "Simplified Chinese" +msgstr "Uproszczony chiński" + +#: conf/global_settings.py:78 +msgid "Traditional Chinese" +msgstr "Chiński tradycyjny" + +#: core/validators.py:64 +msgid "This value must contain only letters, numbers and underscores." +msgstr "To pole może zawierać tylko litery, cyfry i podkreślenia." + +#: core/validators.py:68 +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "" +"To pole może zawierać jedynie litery, cyfry, podkreślenia, myślniki i " +"ukośniki." + +#: core/validators.py:72 +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "To pole może zawierać jedynie litery, cyfry, podkreślenia i pauzy." + +#: core/validators.py:76 +msgid "Uppercase letters are not allowed here." +msgstr "Wielkie litery nie są tutaj dozwolone." + +#: core/validators.py:80 +msgid "Lowercase letters are not allowed here." +msgstr "Małe litery nie są tutaj dozwolone." + +#: core/validators.py:87 +msgid "Enter only digits separated by commas." +msgstr "Wpisz tylko cyfry odddzielone przecinkami." + +#: core/validators.py:99 +msgid "Enter valid e-mail addresses separated by commas." +msgstr "Wpisz poprawne adresy e-mail oddzielone przecinkami." + +#: core/validators.py:103 +msgid "Please enter a valid IP address." +msgstr "Proszę wpisać poprawny adres IP." + +#: core/validators.py:107 +msgid "Empty values are not allowed here." +msgstr "Proszę wypełnić te pola." + +#: core/validators.py:111 +msgid "Non-numeric characters aren't allowed here." +msgstr "Tu mogą być tylko cyfry." + +#: core/validators.py:115 +msgid "This value can't be comprised solely of digits." +msgstr "To pole nie może zawierać jedynie cyfr." + +#: core/validators.py:120 newforms/fields.py:128 +msgid "Enter a whole number." +msgstr "Wpisz liczbę całkowitą." + +#: core/validators.py:124 +msgid "Only alphabetical characters are allowed here." +msgstr "Tutaj są dozwolone tylko litery." + +#: core/validators.py:139 +msgid "Year must be 1900 or later." +msgstr "Rok nie może być wcześniejszy niż 1900." + +#: core/validators.py:143 +#, python-format +msgid "Invalid date: %s" +msgstr "Niepoprawna data: %s" + +#: core/validators.py:153 +msgid "Enter a valid time in HH:MM format." +msgstr "Proszę wpisać poprawną godzinę w formacie GG:MM." + +#: core/validators.py:162 newforms/fields.py:271 +msgid "Enter a valid e-mail address." +msgstr "Wprowadź poprawny adres e-mail." + +#: core/validators.py:178 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Wgraj poprawny plik graficzny. Ten, który został wgrany, nie jest obrazem, " +"albo jest uszkodzony." + +#: core/validators.py:185 +#, python-format +msgid "The URL %s does not point to a valid image." +msgstr "Odnośnik %s nie wskazuje na poprawny plik z obrazem." + +#: core/validators.py:189 +#, python-format +msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +msgstr "" +"Numery telefoniczne muszą być w formacie XXX-XXX-XXXX. \"%s\" jest " +"niepoprawny." + +#: core/validators.py:197 +#, python-format +msgid "The URL %s does not point to a valid QuickTime video." +msgstr "Odnośnik %s nie wskazuje na poprawne nagranie QuickTime video." + +#: core/validators.py:201 +msgid "A valid URL is required." +msgstr "Wymagany jest poprawny URL." + +#: core/validators.py:215 +#, python-format +msgid "" +"Valid HTML is required. Specific errors are:\n" +"%s" +msgstr "" +"Wymagany jest poprawny HTML. Błędy, które wystąpiły:\n" +"%s" + +#: core/validators.py:222 +#, python-format +msgid "Badly formed XML: %s" +msgstr "Nieprawidłowy format XML: %s" + +#: core/validators.py:239 +#, python-format +msgid "Invalid URL: %s" +msgstr "Niepoprawny odnośnik: %s" + +#: core/validators.py:244 core/validators.py:246 +#, python-format +msgid "The URL %s is a broken link." +msgstr "Odnośnik %s jest nieprawidłowy." + +#: core/validators.py:252 +msgid "Enter a valid U.S. state abbreviation." +msgstr "Wpisz poprawny kod stanu U.S.A." + +#: 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] "Nie wolno przeklinać! Słowo %s nie jest dozwolone." +msgstr[1] "Nie wolno przeklinać! Słowa %s nie są dozwolone." + +#: core/validators.py:273 +#, python-format +msgid "This field must match the '%s' field." +msgstr "To pole musi pasować do pola '%s'." + +#: core/validators.py:292 +msgid "Please enter something for at least one field." +msgstr "Proszę uzupełnić przynajmniej jedno pole." + +#: core/validators.py:301 core/validators.py:312 +msgid "Please enter both fields or leave them both empty." +msgstr "Proszę uzupełnić oba pola lub zostawić je puste." + +#: core/validators.py:320 +#, python-format +msgid "This field must be given if %(field)s is %(value)s" +msgstr "To pole musi być uzupełnione, jeśli %(field)s ma wartość %(value)s" + +#: core/validators.py:333 +#, python-format +msgid "This field must be given if %(field)s is not %(value)s" +msgstr "To pole musi być uzupełnione, jeśli %(field)s ma wartość inną niż %(value)s" + +#: core/validators.py:352 +msgid "Duplicate values are not allowed." +msgstr "Duplikaty nie są dozwolone." + +#: core/validators.py:367 +#, python-format +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "Ta wartość musi być pomiędzy %(lower)s a %(upper)s." + +#: core/validators.py:369 +#, python-format +msgid "This value must be at least %s." +msgstr "Ta wartość nie może być mniejsza od %s." + +#: core/validators.py:371 +#, python-format +msgid "This value must be no more than %s." +msgstr "Ta wartość nie może być większa od %s." + +#: core/validators.py:407 +#, python-format +msgid "This value must be a power of %s." +msgstr "Ta wartość musi być potęgą %s." + +#: core/validators.py:418 +msgid "Please enter a valid decimal number." +msgstr "Proszę wpisać poprawną liczbę dziesiętną." + +#: 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] "Proszę wpisać poprawną liczbę dziesiętną o nie więcej niż %s cyfrze." +msgstr[1] "Proszę wpisać poprawną liczbę dziesiętną o nie więcej niż %s cyfrach." + +#: 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] "Proszę wpisać poprawną liczbę dziesiętną zawierającą nie więcej niż %s cyfry." +msgstr[1] "Proszę wpisać poprawną liczbę dziesiętną zawierającą nie więcej niż %s cyfr." + +#: 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] "" +"Proszę wpisać poprawną liczbę dziesiętną z dokładnością do %s miejsca po " +"przecinku." +msgstr[1] "" +"Proszę wpisać poprawną liczbę dziesiętną z dokładnością do %s miejsc po " +"przecinku." + +#: core/validators.py:438 +#, python-format +msgid "Make sure your uploaded file is at least %s bytes big." +msgstr "Upewnij się, że wgrany plik ma conajmniej %s bajtów." + +#: core/validators.py:439 +#, python-format +msgid "Make sure your uploaded file is at most %s bytes big." +msgstr "Upewnij się, że wgrany plik ma co najwyżej %s bajtów." + +#: core/validators.py:456 +msgid "The format for this field is wrong." +msgstr "Format tego pola jest nieprawidłowy." + +#: core/validators.py:471 +msgid "This field is invalid." +msgstr "To pole jest nieprawidłowe." + +#: core/validators.py:507 +#, python-format +msgid "Could not retrieve anything from %s." +msgstr "Nie można nic pobrać z %s." + +#: core/validators.py:510 +#, python-format +msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "URL %(url)s zwrócił niepoprawny nagłówek Content-Type '%(contenttype)s'." + +#: core/validators.py:543 +#, python-format +msgid "" +"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " +"\"%(start)s\".)" +msgstr "" +"Proszę zamknąć tag %(tag)s z linii %(line)s. (Linia zaczyna się od \"%(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 "" +"Część tekstu od linii %(line)s nie jest dozwolony w tym kontekście. (Linia " +"zaczyna się od \"%(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\" w linii %(line)s jest niepoprawnym atrybutem. (Linia zaczyna " +"się od \"%(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>\" w linii %(line)s nie jest poprawnym tagiem. (Linia zaczyna się " +"od \"%(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 "" +"Tag w linii %(line)s nie posiada jednego lub więcej wymaganych atrybutów. " +"(Linia zaczyna się od \"%(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 "" +"Atrybut \"%(attr)s\" w linii %(line)s ma niepoprawną wartość. (Linia zaczyna " +"się od \"%(start)s\".)" + +#: views/generic/create_update.py:43 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "%(verbose_name)s zostało pomyślnie utworzone." + +#: views/generic/create_update.py:117 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "%(verbose_name)s zostało pomyślnie zmienione." + +#: views/generic/create_update.py:184 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "%(verbose_name)s zostało usunięte." + +#: newforms/models.py:165 newforms/fields.py:364 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "Wybierz poprawną wartość. Podana nie jest jednym z dostępnych wyborów." + +#: newforms/models.py:182 newforms/fields.py:380 newforms/fields.py:456 +msgid "Enter a list of values." +msgstr "Podaj listę wartości." + +#: newforms/models.py:188 newforms/fields.py:389 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "Wybierz poprawną wartość. %s nie jest jednym z dostępnych wyborów." + +#: newforms/fields.py:103 newforms/fields.py:256 +#, python-format +msgid "Ensure this value has at most %d characters." +msgstr "Upewnij się, że tekst ma co najwyżej %d znaków." + +#: newforms/fields.py:105 newforms/fields.py:258 +#, python-format +msgid "Ensure this value has at least %d characters." +msgstr "Upewnij się, że tekst ma co najmniej %d znaków." + +#: newforms/fields.py:130 +#, python-format +msgid "Ensure this value is less than or equal to %s." +msgstr "Upewnij się, że ta wartość jest mniejsza lub równa %s." + +#: newforms/fields.py:132 +#, python-format +msgid "Ensure this value is greater than or equal to %s." +msgstr "Upewnij się, że ta wartość jest większa lub równa %s." + +#: newforms/fields.py:165 +msgid "Enter a valid date." +msgstr "Wpisz poprawną datę." + +#: newforms/fields.py:192 +msgid "Enter a valid time." +msgstr "Wpisz poprawną godzinę." + +#: newforms/fields.py:228 +msgid "Enter a valid date/time." +msgstr "Wpisz poprawną datę/godzinę." + +#: newforms/fields.py:242 +msgid "Enter a valid value." +msgstr "Wpisz poprawną wartość." + +#: newforms/fields.py:289 newforms/fields.py:311 +msgid "Enter a valid URL." +msgstr "Wpisz poprawny URL." + +#: newforms/fields.py:313 +msgid "This URL appears to be a broken link." +msgstr "Odnośnik %s jest nieprawidłowy." + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "th" +msgstr "-y" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "st" +msgstr "-szy" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "nd" +msgstr "-gi" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "rd" +msgstr "-ci" + +#: contrib/humanize/templatetags/humanize.py:47 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "%(value).1f milion" +msgstr[1] "%(value).1f milionów" + +#: contrib/humanize/templatetags/humanize.py:50 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "%(value).1f miliard" +msgstr[1] "%(value).1f miliardów" + +#: contrib/humanize/templatetags/humanize.py:53 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "%(value).1f bilion" +msgstr[1] "%(value).1f bilionów" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "one" +msgstr "jeden" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "two" +msgstr "dwa" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "three" +msgstr "trzy" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "four" +msgstr "cztery" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "five" +msgstr "pięć" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "six" +msgstr "sześć" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "seven" +msgstr "siedem" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "eight" +msgstr "osiem" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "nine" +msgstr "dziewięć" + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "przekieruj z" + +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "Podaj pełną ścieżkę bez nazwy domeny. Przykład: '/events/search/'." + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "przekierowanie do" + +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "Ścieżka jak wyżej lub pełny URL z http://" + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "przekieruj" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "przekierowania" #: contrib/comments/models.py:67 contrib/comments/models.py:166 msgid "object ID" @@ -74,7 +828,7 @@ msgstr "data/czas dodania" msgid "is public" msgstr "publicznie dostepny" -#: 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 "Adres IP" @@ -87,8 +841,8 @@ msgid "" "Check this box if the comment is inappropriate. A \"This comment has been " "removed\" message will be displayed instead." msgstr "" -"Zaznacz to pole jeżeli komentarz jest nieodpowiedni. Wyświetlony zostanie tekst \"Ten " -"komentarz został usunięty\". " +"Zaznacz to pole jeżeli komentarz jest nieodpowiedni. Wyświetlony zostanie " +"tekst \"Ten komentarz został usunięty\". " #: contrib/comments/models.py:91 msgid "comments" @@ -96,7 +850,7 @@ msgstr "komentarze" #: contrib/comments/models.py:131 contrib/comments/models.py:207 msgid "Content object" -msgstr "Obiekt Treści" +msgstr "Obiekt treści" #: contrib/comments/models.py:159 #, python-format @@ -109,7 +863,7 @@ msgid "" msgstr "" "Dodane przez %(user)s dnia %(date)s\n" "\n" -"%(comment)y\n" +"%(comment)s\n" "\n" "http://%(domain)s%(url)s" @@ -211,14 +965,11 @@ msgstr "Błędny ID komentarza" msgid "No voting for yourself" msgstr "Nie można głosować na siebie" -#: contrib/comments/views/comments.py:28 -msgid "" -"This rating is required because you've entered at least one other rating." -msgstr "" -"Ta ocena jest wymagana gdyż podałeś przynajmniej jedną inną ocenę." +#: contrib/comments/views/comments.py:27 +msgid "This rating is required because you've entered at least one other rating." +msgstr "Ta ocena jest wymagana gdyż podałeś przynajmniej jedną inną ocenę." - -#: 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 " @@ -231,9 +982,13 @@ msgid_plural "" "\n" "%(text)s" msgstr[0] "" +"Ten komentarz został wysłany przez użytkownika, który wysłał mniej niż %" +"(count)s komentarz:\n" +"\n" +"%(text)s" msgstr[1] "" -#: contrib/comments/views/comments.py:117 +#: contrib/comments/views/comments.py:116 #, python-format msgid "" "This comment was posted by a sketchy user:\n" @@ -244,27 +999,28 @@ 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 "Dozwolone tylko POSTy" -#: 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 "Jedno lub więcej wymaganych pól nie zostało wypełnionych" -#: 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 "Ktoś próbował obejść zabezpieczenia formularza komentarzy" -#: 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 "Formularz komentarza miał niepoprawny parametr 'target' -- ID obiektu było " +msgstr "" +"Formularz komentarza miał niepoprawny parametr 'target' -- ID obiektu było " "niepoprawne" #: contrib/comments/views/comments.py:257 @@ -279,35 +1035,36 @@ msgid "Username:" msgstr "Nazwa użytkownika:" #: contrib/comments/templates/comments/form.html:6 -#: contrib/admin/templates/admin/login.html:20 -msgid "Password:" -msgstr "Hasło:" - -#: contrib/comments/templates/comments/form.html:6 -msgid "Forgotten your password?" -msgstr "Zapomniałeś hasło?" - -#: contrib/comments/templates/comments/form.html:8 -#: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:23 -#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 #: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 #: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 #: contrib/admin/templates/admin_doc/missing_docutils.html:4 #: contrib/admin/templates/admin_doc/view_index.html:5 #: contrib/admin/templates/admin_doc/model_detail.html:3 #: contrib/admin/templates/admin_doc/index.html:4 #: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 msgid "Log out" msgstr "Wyloguj się" +#: contrib/comments/templates/comments/form.html:8 +#: contrib/admin/templates/admin/login.html:20 +msgid "Password:" +msgstr "Hasło:" + +#: contrib/comments/templates/comments/form.html:8 +msgid "Forgotten your password?" +msgstr "Zapomniałeś hasło?" + #: contrib/comments/templates/comments/form.html:12 msgid "Ratings" msgstr "Oceny" @@ -326,13 +1083,13 @@ msgstr "Opcjonalne" msgid "Post a photo" msgstr "Wyślij zdjęcie" -#: contrib/comments/templates/comments/form.html:27 +#: contrib/comments/templates/comments/form.html:28 #: contrib/comments/templates/comments/freeform.html:5 msgid "Comment:" msgstr "Komentarz:" -#: 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 "Podgląd" @@ -340,6 +1097,22 @@ msgstr "Podgląd" msgid "Your name:" msgstr "Twoje imię:" +#: contrib/sites/models.py:10 +msgid "domain name" +msgstr "nazwa domeny" + +#: contrib/sites/models.py:11 +msgid "display name" +msgstr "wyświetlana nazwa" + +#: contrib/sites/models.py:15 +msgid "site" +msgstr "strona" + +#: contrib/sites/models.py:16 +msgid "sites" +msgstr "strony" + #: contrib/admin/filterspecs.py:40 #, python-format msgid "" @@ -350,13 +1123,13 @@ msgstr "" "
                            \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 "Wszystko" #: contrib/admin/filterspecs.py:109 msgid "Any date" -msgstr "Jakolwiek data" +msgstr "Dowolna data" #: contrib/admin/filterspecs.py:110 msgid "Today" @@ -374,18 +1147,6 @@ msgstr "Ten miesiąc" msgid "This year" msgstr "Ten rok" -#: contrib/admin/filterspecs.py:143 -msgid "Yes" -msgstr "Tak" - -#: contrib/admin/filterspecs.py:143 -msgid "No" -msgstr "Nie" - -#: contrib/admin/filterspecs.py:150 -msgid "Unknown" -msgstr "Nieznany" - #: contrib/admin/models.py:16 msgid "action time" msgstr "czas akcji" @@ -414,12 +1175,34 @@ msgstr "log" msgid "log entries" msgstr "logi" -#: contrib/admin/templatetags/admin_list.py:228 +#: contrib/admin/templatetags/admin_list.py:247 msgid "All dates" msgstr "Wszystkie daty" -#: contrib/admin/views/decorators.py:9 contrib/auth/forms.py:36 -#: contrib/auth/forms.py:41 +#: contrib/admin/views/auth.py:19 contrib/admin/views/main.py:260 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "%(name)s \"%(obj)s\" dodany pomyślnie." + +#: contrib/admin/views/auth.py:24 contrib/admin/views/main.py:264 +#: contrib/admin/views/main.py:350 +msgid "You may edit it again below." +msgstr "Możesz ponownie edytować wpis poniżej." + +#: contrib/admin/views/auth.py:30 +msgid "Add user" +msgstr "Dodaj użytkownika" + +#: contrib/admin/views/auth.py:57 +msgid "Password changed successfully." +msgstr "Hasło zostało zmienione pomyślnie." + +#: contrib/admin/views/auth.py:64 +#, python-format +msgid "Change password: %s" +msgstr "Zmień hasło: %s" + +#: 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." @@ -427,243 +1210,313 @@ msgstr "" "Proszę wpisać poprawną nazwę użytkownika i hasło. Uwaga: wielkość liter ma " "znaczenie." -#: contrib/admin/views/decorators.py:23 +#: contrib/admin/views/decorators.py:24 #: contrib/admin/templates/admin/login.html:25 msgid "Log in" msgstr "Zaloguj się" -#: 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 "" -"Zaloguj się ponownie. Twoja sesja wygasła lecz twoje zgłoszenie " -"zostało zapisane." +"Zaloguj się ponownie. Twoja sesja wygasła lecz twoje zgłoszenie zostało " +"zapisane." -#: 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 "" -"Twoja przeglądarka nie chce akceptować ciasteczek. Zmień " -"jej ustawienia i spróbuj ponownie." +"Twoja przeglądarka nie chce akceptować ciasteczek. Zmień jej ustawienia i " +"spróbuj ponownie." -#: contrib/admin/views/decorators.py:82 +#: contrib/admin/views/decorators.py:83 msgid "Usernames cannot contain the '@' character." msgstr "Nazwy użytkowników nie mogą zawierać znaków '@'." -#: 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 "Twój adres e-mail to nie jest twój login. Spróbuj '%s'." +#: 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 "filtr:" + +#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137 +#: contrib/admin/views/doc.py:139 +msgid "view:" +msgstr "widok:" + +#: contrib/admin/views/doc.py:164 +#, python-format +msgid "App %r not found" +msgstr "Aplikacja %r nie została znaleziona" + +#: contrib/admin/views/doc.py:171 +#, python-format +msgid "Model %(name)r not found in app %(label)r" +msgstr "Model %(name)r nie został znaleziony w aplikacji %(label)r" + +#: contrib/admin/views/doc.py:183 +#, python-format +msgid "the related `%(label)s.%(type)s` object" +msgstr "powiązany obiekt `%(label)s.%(type)s`" + +#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205 +#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224 +msgid "model:" +msgstr "model:" + +#: contrib/admin/views/doc.py:214 +#, python-format +msgid "related `%(label)s.%(name)s` objects" +msgstr "powiązane obiekty `%(label)s.%(name)s`" + +#: contrib/admin/views/doc.py:219 +#, python-format +msgid "all %s" +msgstr "wszystkie %s" + +#: contrib/admin/views/doc.py:224 +#, python-format +msgid "number of %s" +msgstr "liczba %s" + +#: contrib/admin/views/doc.py:229 +#, python-format +msgid "Fields on %s objects" +msgstr "Pola obiektów %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 "Liczba całkowita" + +#: contrib/admin/views/doc.py:292 +msgid "Boolean (Either True or False)" +msgstr "Wartość logiczna (True, False - prawda lub fałsz)" + +#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311 +#, python-format +msgid "String (up to %(maxlength)s)" +msgstr "Łańcuch (do %(maxlength)s znaków)" + +#: contrib/admin/views/doc.py:294 +msgid "Comma-separated integers" +msgstr "Liczby całkowite rozdzielone przecinkami" + +#: contrib/admin/views/doc.py:295 +msgid "Date (without time)" +msgstr "Data (bez godziny)" + +#: contrib/admin/views/doc.py:296 +msgid "Date (with time)" +msgstr "Data (z godziną)" + +#: contrib/admin/views/doc.py:297 +msgid "E-mail address" +msgstr "Adres e-mail" + +#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299 +#: contrib/admin/views/doc.py:302 +msgid "File path" +msgstr "Ścieżka do pliku" + +#: contrib/admin/views/doc.py:300 +msgid "Decimal number" +msgstr "Numer dziesiętny" + +#: contrib/admin/views/doc.py:306 +msgid "Boolean (Either True, False or None)" +msgstr "Wartość logiczna (True, False, None - prawda, fałsz lub nic)" + +#: contrib/admin/views/doc.py:307 +msgid "Relation to parent model" +msgstr "Relacja do modelu rodzica" + +#: contrib/admin/views/doc.py:308 +msgid "Phone number" +msgstr "Numer telefonu" + +#: contrib/admin/views/doc.py:313 +msgid "Text" +msgstr "Tekst" + +#: contrib/admin/views/doc.py:314 +msgid "Time" +msgstr "Czas" + +#: 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 "Stan USA (dwie duże litery)" + +#: contrib/admin/views/doc.py:317 +msgid "XML text" +msgstr "Tekst XML" + +#: contrib/admin/views/doc.py:343 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "%s nie jest obiektem urlpattern" + #: contrib/admin/views/main.py:226 msgid "Site administration" msgstr "Administracja stroną" -#: contrib/admin/views/main.py:260 -#, python-format -msgid "The %(name)s \"%(obj)s\" was added successfully." -msgstr "%(name)s \"%(obj)s\" dodany pomyślnie." - -#: contrib/admin/views/main.py:264 contrib/admin/views/main.py:348 -msgid "You may edit it again below." -msgstr "Możesz ponownie edytować wpis poniżej." - -#: contrib/admin/views/main.py:272 contrib/admin/views/main.py:357 +#: contrib/admin/views/main.py:274 contrib/admin/views/main.py:359 #, python-format msgid "You may add another %s below." msgstr "Możesz dodać nowy wpis %s poniżej." -#: contrib/admin/views/main.py:290 +#: contrib/admin/views/main.py:292 #, python-format msgid "Add %s" msgstr "Dodaj %s" -#: contrib/admin/views/main.py:336 +#: contrib/admin/views/main.py:338 #, python-format msgid "Added %s." msgstr "Dodano %s" -#: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338 #: contrib/admin/views/main.py:340 -msgid "and" -msgstr "i" - -#: contrib/admin/views/main.py:338 #, python-format msgid "Changed %s." msgstr "Zmieniono %s" -#: contrib/admin/views/main.py:340 +#: contrib/admin/views/main.py:342 #, python-format msgid "Deleted %s." msgstr "Skasowano %s" -#: contrib/admin/views/main.py:343 +#: contrib/admin/views/main.py:345 msgid "No fields changed." msgstr "Żadne pole nie zmienione." -#: contrib/admin/views/main.py:346 +#: contrib/admin/views/main.py:348 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." msgstr "%(name)s \"%(obj)s\" zostało pomyślnie zmienione." -#: contrib/admin/views/main.py:354 +#: contrib/admin/views/main.py:356 #, python-format -msgid "" -"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." -msgstr "" -"%(name)s \"%(obj)s\" dodane pomyślnie. Możesz edytować ponownie wpis poniżej." +msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "%(name)s \"%(obj)s\" dodane pomyślnie. Możesz edytować ponownie wpis poniżej." - -#: contrib/admin/views/main.py:392 +#: contrib/admin/views/main.py:394 #, python-format msgid "Change %s" msgstr "Zmień %s" -#: contrib/admin/views/main.py:470 +#: contrib/admin/views/main.py:479 #, python-format msgid "One or more %(fieldname)s in %(name)s: %(obj)s" msgstr "Jedno lub więcej %(fieldname)s w %(name)s: %(obj)s" -#: contrib/admin/views/main.py:475 +#: contrib/admin/views/main.py:484 #, python-format msgid "One or more %(fieldname)s in %(name)s:" msgstr "Jedno lub więcej %(fieldname)s w %(name)s:" -#: contrib/admin/views/main.py:508 +#: contrib/admin/views/main.py:517 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "%(name)s \"%(obj)s\" usunięty pomyślnie." -#: contrib/admin/views/main.py:511 +#: contrib/admin/views/main.py:520 msgid "Are you sure?" msgstr "Jesteś pewien?" -#: contrib/admin/views/main.py:533 +#: contrib/admin/views/main.py:542 #, python-format msgid "Change history: %s" msgstr "Historia zmian: %s" -#: contrib/admin/views/main.py:565 +#: contrib/admin/views/main.py:576 #, python-format msgid "Select %s" msgstr "Zaznacz %s" -#: contrib/admin/views/main.py:565 +#: contrib/admin/views/main.py:576 #, python-format msgid "Select %s to change" msgstr "Zaznacz %s aby zmienić" -#: contrib/admin/views/doc.py:277 contrib/admin/views/doc.py:286 -#: contrib/admin/views/doc.py:288 contrib/admin/views/doc.py:294 -#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:297 -msgid "Integer" -msgstr "Liczba całkowita" +#: contrib/admin/views/main.py:771 +msgid "Database error" +msgstr "Błąd bazy danych" -#: contrib/admin/views/doc.py:278 -msgid "Boolean (Either True or False)" -msgstr "Wartość logiczna (True, False - prawda lub fałsz)" +#: contrib/admin/templates/widget/file.html:2 +msgid "Currently:" +msgstr "Teraz:" -#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:296 -#, python-format -msgid "String (up to %(maxlength)s)" -msgstr "Łańcuch (do %(maxlength)s znaków)" +#: contrib/admin/templates/widget/file.html:3 +msgid "Change:" +msgstr "Zmień:" -#: contrib/admin/views/doc.py:280 -msgid "Comma-separated integers" -msgstr "Liczby całkowite rozdzielone przecinkami" +#: contrib/admin/templates/widget/date_time.html:3 +msgid "Date:" +msgstr "Data:" -#: contrib/admin/views/doc.py:281 -msgid "Date (without time)" -msgstr "Data (bez godziny)" +#: contrib/admin/templates/widget/date_time.html:4 +msgid "Time:" +msgstr "Czas:" -#: contrib/admin/views/doc.py:282 -msgid "Date (with time)" -msgstr "Data (z godziną)" - -#: contrib/admin/views/doc.py:283 -msgid "E-mail address" -msgstr "Adres e-mail" - -#: contrib/admin/views/doc.py:284 contrib/admin/views/doc.py:287 -msgid "File path" -msgstr "Ścieżka do pliku" - -#: contrib/admin/views/doc.py:285 -msgid "Decimal number" -msgstr "Numer dziesiętny" - -#: contrib/admin/views/doc.py:291 -msgid "Boolean (Either True, False or None)" -msgstr "Wartość logiczna (True, False, None - prawda, fałsz lub nic)" - -#: contrib/admin/views/doc.py:292 -msgid "Relation to parent model" -msgstr "Relacja do modelu rodzica" - -#: contrib/admin/views/doc.py:293 -msgid "Phone number" -msgstr "Numer telefonu" - -#: contrib/admin/views/doc.py:298 -msgid "Text" -msgstr "Tekst" - -#: contrib/admin/views/doc.py:299 -msgid "Time" -msgstr "Czas" - -#: contrib/admin/views/doc.py:300 contrib/flatpages/models.py:7 -msgid "URL" -msgstr "URL" - -#: contrib/admin/views/doc.py:301 -msgid "U.S. state (two uppercase letters)" -msgstr "Stan USA (dwie duże litery)" - -#: contrib/admin/views/doc.py:302 -msgid "XML text" -msgstr "Tekst XML" - -#: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:23 -#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 #: contrib/admin/templates/admin_doc/bookmarklets.html:3 msgid "Documentation" msgstr "Dokumentacja" -#: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:23 -#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:46 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 #: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 #: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 #: contrib/admin/templates/admin_doc/missing_docutils.html:4 #: contrib/admin/templates/admin_doc/view_index.html:5 #: contrib/admin/templates/admin_doc/model_detail.html:3 #: contrib/admin/templates/admin_doc/index.html:4 #: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 msgid "Change password" msgstr "Zmiana hasła" +#: contrib/admin/templates/admin/change_list.html:6 #: contrib/admin/templates/admin/object_history.html:5 #: contrib/admin/templates/admin/500.html:4 -#: contrib/admin/templates/admin/change_list.html:6 -#: contrib/admin/templates/admin/base.html:28 -#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/invalid_setup.html:4 #: contrib/admin/templates/admin/change_form.html:13 +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/base.html:30 +#: contrib/admin/templates/admin/auth/user/change_password.html:12 #: contrib/admin/templates/registration/password_change_done.html:4 #: contrib/admin/templates/registration/password_reset_form.html:4 #: contrib/admin/templates/registration/logged_out.html:4 @@ -673,8 +1526,18 @@ msgstr "Zmiana hasła" msgid "Home" msgstr "Początek" +#: contrib/admin/templates/admin/change_list.html:12 +#, python-format +msgid "Add %(name)s" +msgstr "Dodaj %(name)s" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr " Używając %(filter_title)s " + #: 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 "Historia" @@ -699,8 +1562,28 @@ msgid "" "This object doesn't have a change history. It probably wasn't added via this " "admin site." msgstr "" -"Ten obiekt nie ma historii zmian. Najprawdopodobniej wpis te nie " -"został dodany poprzez panel admina" +"Ten obiekt nie ma historii zmian. Najprawdopodobniej wpis ten nie został " +"dodany poprzez panel administracyjny." + +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Go" +msgstr "Szukaj" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "1 wynik" +msgstr[1] "%(counter)s wyników" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "%(full_result_count)s trafień" + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "Pokaż wszystko" #: contrib/admin/templates/admin/base_site.html:4 msgid "Django site admin" @@ -727,23 +1610,29 @@ 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 "" -"Wystąpił niespodziewany błąd. Raport został wysłany emailem " -"administratorowi strony." +"Wystąpił niespodziewany błąd. Raport został wysłany emailem administratorowi " +"strony." -#: contrib/admin/templates/admin/404.html:4 -#: contrib/admin/templates/admin/404.html:8 -msgid "Page not found" -msgstr "Strona nie znaleziona" - -#: contrib/admin/templates/admin/404.html:10 -msgid "We're sorry, but the requested page could not be found." -msgstr "Niestety nie można znaleźć rządanej strony." +#: 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 "" +"Instalacja Twojej bazy danych jest niepoprawna. Upewnij się, że odpowiednie " +"tabele zostały utworzone i odpowiedni użytkownik jest uprawniony do ich " +"odczytu." #: contrib/admin/templates/admin/index.html:17 #, python-format msgid "Models available in the %(name)s application." msgstr "Modele dostępne w aplikacji %(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" @@ -769,75 +1658,70 @@ msgstr "Moje akcje" msgid "None available" msgstr "Brak" -#: contrib/admin/templates/admin/change_list.html:11 -#, python-format -msgid "Add %(name)s" -msgstr "Dodaj %(name)s" +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "Strona nie znaleziona" -#: contrib/admin/templates/admin/login.html:22 -msgid "Have you forgotten your password?" -msgstr "" -"Czy zapomniałeś/łaś hasła?" +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "Niestety nie można znaleźć rządanej strony." -#: contrib/admin/templates/admin/base.html:23 -msgid "Welcome," -msgstr "Witaj," +#: contrib/admin/templates/admin/filters.html:4 +msgid "Filter" +msgstr "Filtr" + +#: contrib/admin/templates/admin/change_form.html:22 +msgid "View on site" +msgstr "Pokaż na stronie" + +#: 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] "Proszę popraw poniższy błąd" +msgstr[1] "Proszę popraw poniższe błędy" + +#: contrib/admin/templates/admin/change_form.html:50 +msgid "Ordering" +msgstr "Sortowanie" + +#: contrib/admin/templates/admin/change_form.html:53 +msgid "Order:" +msgstr "Porządek:" #: contrib/admin/templates/admin/delete_confirmation.html:9 #: contrib/admin/templates/admin/submit_line.html:3 msgid "Delete" -msgstr "Skasuj" +msgstr "Usuń" #: 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 "" -"Skasowanie %(object_name)s '%(object)s' spowoduje kasację zależnych " -"obiektów, lecz twoje uprawnienia nie pozwalają na usunięcie następujących " +"Skasowanie %(object_name)s '%(escaped_object)s' spowoduje usunięcie " +"zależnych obiektów, lecz nie posiadasz uprawnień do usunięcia następujących " "typów obiektów:" #: 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 "" -"Czy chcesz skasować %(object_name)s \"%(object)s\"? Wszystkie " +"Czy chcesz skasować %(object_name)s \"%(escaped_object)s\"? Następujące " "zależne obiekty zostaną skasowane:" #: contrib/admin/templates/admin/delete_confirmation.html:26 msgid "Yes, I'm sure" msgstr "Tak, usuń" -#: contrib/admin/templates/admin/filter.html:2 -#, python-format -msgid " By %(title)s " -msgstr "Używając %(title)s" - -#: contrib/admin/templates/admin/search_form.html:8 -msgid "Go" -msgstr "Szukaj" - -#: contrib/admin/templates/admin/change_form.html:21 -msgid "View on site" -msgstr "Pokaż na stronie" - -#: contrib/admin/templates/admin/change_form.html:30 -msgid "Please correct the error below." -msgid_plural "Please correct the errors below." -msgstr[0] "Proszę popraw poniższy błąd" -msgstr[1] "Proszę popraw poniższe błędy" - -#: contrib/admin/templates/admin/change_form.html:48 -msgid "Ordering" -msgstr "Sortowanie" - -#: contrib/admin/templates/admin/change_form.html:51 -msgid "Order:" -msgstr "Porządek:" +#: contrib/admin/templates/admin/base.html:25 +msgid "Welcome," +msgstr "Witaj," #: contrib/admin/templates/admin/submit_line.html:4 msgid "Save as new" @@ -855,6 +1739,38 @@ msgstr "Zapisz i kontynuuj edycję" msgid "Save" msgstr "Zapisz" +#: contrib/admin/templates/admin/auth/user/change_password.html:28 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "Podaj nowe hasło dla użytkownika %(username)s." + +#: contrib/admin/templates/admin/auth/user/change_password.html:34 +#: contrib/admin/templates/admin/auth/user/add_form.html:18 +msgid "Password" +msgstr "Hasło" + +#: contrib/admin/templates/admin/auth/user/change_password.html:39 +#: contrib/admin/templates/admin/auth/user/add_form.html:23 +msgid "Password (again)" +msgstr "Hasło (powtórz)" + +#: 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 "Podaj powyższe hasło w celu weryfikacji." + +#: 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 "" +"Najpierw podaj nazwę użytkownika i hasło. Następnie będziesz mógł edytować " +"więcej opcji użytkownika." + +#: contrib/admin/templates/admin/auth/user/add_form.html:12 +msgid "Username" +msgstr "Nazwa użytkownika" + #: 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 @@ -883,8 +1799,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 "" -"Podaj swój adres email. Hasło zostanie zresetowane i wysłane na twój " -"adres email." +"Podaj swój adres email. Hasło zostanie zresetowane i wysłane na twój adres " +"email." #: contrib/admin/templates/registration/password_reset_form.html:16 msgid "E-mail address:" @@ -912,8 +1828,8 @@ msgid "" "We've e-mailed a new password to the e-mail address you submitted. You " "should be receiving it shortly." msgstr "" -"Nowe hasło zostało wysłane na podany adres email. Powinieneś " -"otrzymać je niebawem." +"Nowe hasło zostało wysłane na podany adres email. Powinieneś otrzymać je " +"niebawem." #: contrib/admin/templates/registration/password_change_form.html:12 msgid "" @@ -986,6 +1902,14 @@ msgid "" "as \"internal\" (talk to your system administrator if you aren't sure if\n" "your computer is \"internal\").

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

                            Aby zainstalować skryptozakładki, przeciągnij łącze do " +"paska zakładek\n" +"lub kliknij prawym klawiszem na łączu i dodaj je do zakładek. Teraz możesz\n" +"wybrać skryptozakładkę na dowolnej stronie serwisu. Uwaga: niektóre z tych " +"skryptozakładek wymagają przeglądania serwisu z komputera\n" +"\"wewnętrznego\" (skontaktuj się z administratorem systemu, jeśli nie jesteś " +"pewien, czy ten komputer jest \"wewnętrznym\").

                            \n" #: contrib/admin/templates/admin_doc/bookmarklets.html:19 msgid "Documentation for this page" @@ -996,6 +1920,8 @@ msgid "" "Jumps you from any page to the documentation for the view that generates " "that page." msgstr "" +"Przekierowuje z dowolnej strony do dokumentacji dla widoku, który ją " +"generuje." #: contrib/admin/templates/admin_doc/bookmarklets.html:22 msgid "Show object ID" @@ -1005,13 +1931,11 @@ msgstr "Pokaż ID obiektu" msgid "" "Shows the content-type and unique ID for pages that represent a single " "object." -msgstr "" -"Pokazuje typ i unikalne ID dla stron, które reprezentują " -"pojedynczy obiekt." +msgstr "Pokazuje typ i unikalne ID dla stron, które reprezentują pojedynczy obiekt." #: contrib/admin/templates/admin_doc/bookmarklets.html:25 msgid "Edit this object (current window)" -msgstr "Edytuj ten obiekt (bierzące okno)" +msgstr "Edytuj ten obiekt (bieżące okno)" #: contrib/admin/templates/admin_doc/bookmarklets.html:26 msgid "Jumps to the admin page for pages that represent a single object." @@ -1025,58 +1949,691 @@ msgstr "Edytuj ten obiekt (nowe onko)" msgid "As above, but opens the admin page in a new window." msgstr "Jak wyżej, tyle że otwiera nowe okno." -#: contrib/admin/templates/widget/date_time.html:3 -msgid "Date:" -msgstr "Data:" +#: contrib/contenttypes/models.py:36 +msgid "python model class name" +msgstr "nazwa pythonowa modelu klasy" -#: contrib/admin/templates/widget/date_time.html:4 -msgid "Time:" -msgstr "Czas:" +#: contrib/contenttypes/models.py:39 +msgid "content type" +msgstr "typ zawartości" -#: contrib/admin/templates/widget/file.html:2 -msgid "Currently:" -msgstr "Teraz:" +#: contrib/contenttypes/models.py:40 +msgid "content types" +msgstr "typy zawartości" -#: contrib/admin/templates/widget/file.html:3 -msgid "Change:" -msgstr "Zmień:" +#: contrib/auth/views.py:40 +msgid "Logged out" +msgstr "Wylogowany" -#: contrib/redirects/models.py:7 -msgid "redirect from" -msgstr "przekieruj z" +#: contrib/auth/models.py:44 contrib/auth/models.py:64 +msgid "name" +msgstr "nazwa" -#: contrib/redirects/models.py:8 +#: contrib/auth/models.py:46 +msgid "codename" +msgstr "nazwa kodowa" + +#: contrib/auth/models.py:49 +msgid "permission" +msgstr "uprawnienie" + +#: contrib/auth/models.py:50 contrib/auth/models.py:65 +msgid "permissions" +msgstr "uprawnienia" + +#: contrib/auth/models.py:68 +msgid "group" +msgstr "grupa" + +#: contrib/auth/models.py:69 contrib/auth/models.py:109 +msgid "groups" +msgstr "grupy" + +#: contrib/auth/models.py:99 +msgid "username" +msgstr "użytkownik" + +#: contrib/auth/models.py:99 msgid "" -"This should be an absolute path, excluding the domain name. Example: '/" -"events/search/'." +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." msgstr "" -"Podaj pełną ścieżkę bez nazwy domeny. Przykład: '/" -"events/search/'." +"Wymagane. 30 znaków lub mniej. Tylko znaki alfanumeryczne (litery, cyfry i " +"podkreślenia)." -#: contrib/redirects/models.py:9 -msgid "redirect to" -msgstr "przekierowanie do" +#: contrib/auth/models.py:100 +msgid "first name" +msgstr "Imię" -#: contrib/redirects/models.py:10 +#: contrib/auth/models.py:101 +msgid "last name" +msgstr "Nazwisko" + +#: contrib/auth/models.py:102 +msgid "e-mail address" +msgstr "adres e-mail" + +#: contrib/auth/models.py:103 +msgid "password" +msgstr "hasło" + +#: contrib/auth/models.py:103 msgid "" -"This can be either an absolute path (as above) or a full URL starting with " -"'http://'." -msgstr "Ścieżka jak wyżej lub pełny URL z http://" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "" +"Użyj '[algo]$[salt]$[hexdigest]' lub formularza zmiany " +"hasła." -#: contrib/redirects/models.py:12 -msgid "redirect" -msgstr "przekieruj" +#: contrib/auth/models.py:104 +msgid "staff status" +msgstr "w zespole" -#: contrib/redirects/models.py:13 -msgid "redirects" -msgstr "przekierowania" +#: contrib/auth/models.py:104 +msgid "Designates whether the user can log into this admin site." +msgstr "Oznacza czy użytkownik może zalogować się do panelu admina." + +#: contrib/auth/models.py:105 +msgid "active" +msgstr "aktywny" + +#: contrib/auth/models.py:105 +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "" +"Oznacza czy użytkownik może zalogować się do panelu administratora. Odznacz " +"to zamiast usuwać konta." + +#: contrib/auth/models.py:106 +msgid "superuser status" +msgstr "Główny Administrator" + +#: contrib/auth/models.py:106 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" +"Oznacza, że ten użytkownik ma wszystkie uprawnienia bez jawnego " +"przypisywania ich." + +#: contrib/auth/models.py:107 +msgid "last login" +msgstr "ostatnio zalogowany" + +#: contrib/auth/models.py:108 +msgid "date joined" +msgstr "data przyłączenia" + +#: contrib/auth/models.py:110 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" +"Oprócz uprawnień przypisanych bezpośrednio użytkownikowi otrzyma on " +"uprawnienia grup, do których należy." + +#: contrib/auth/models.py:111 +msgid "user permissions" +msgstr "uprawnienia użytkownika" + +# kurwa +#: contrib/auth/models.py:115 +msgid "user" +msgstr "użytkownik" + +#: contrib/auth/models.py:116 +msgid "users" +msgstr "użytkownicy" + +#: contrib/auth/models.py:122 +msgid "Personal info" +msgstr "Dane osobowe" + +#: contrib/auth/models.py:123 +msgid "Permissions" +msgstr "Uprawnienia" + +#: contrib/auth/models.py:124 +msgid "Important dates" +msgstr "Ważne daty" + +#: contrib/auth/models.py:125 +msgid "Groups" +msgstr "Grupy" + +#: contrib/auth/models.py:269 +msgid "message" +msgstr "wiadomość" + +#: contrib/auth/models.py:282 +msgid "AnonymousUser" +msgstr "UżytkownikAnonimowy" + +#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 +msgid "The two password fields didn't match." +msgstr "Hasła się nie zgadzają." + +#: contrib/auth/forms.py:25 +msgid "A user with that username already exists." +msgstr "Użytkownik o tej nazwie już istnieje." + +#: contrib/auth/forms.py:53 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "" +"Twoja przeglądarka nie chce akceptować ciasteczek. Są one wymagane do " +"zalogowania się." + +#: contrib/auth/forms.py:62 +msgid "This account is inactive." +msgstr "To konto jest nieaktywne." + +#: contrib/auth/forms.py:85 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "" +"Ten adres e-mail nie ma przypisanego konta. Jesteś pewien, że " +"zarejestrowałeś się?" + +#: contrib/auth/forms.py:117 +msgid "The two 'new password' fields didn't match." +msgstr "Pola 'nowe hasło' nie zgadzają się." + +#: contrib/auth/forms.py:124 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "Podane stare hasło jest niepoprawne. Proszę podać je jeszcze raz." + +#: contrib/localflavor/uk/forms.py:18 +msgid "Enter a postcode. A space is required between the two postcode parts." +msgstr "Wpisz kod pocztowy. Biały znak pomiędzy dwiema częściami kodu jest wymagany." + +#: contrib/localflavor/br/forms.py:18 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "Wpisz kod pocztowy w formacie XXXXX-XXX." + +#: contrib/localflavor/br/forms.py:30 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "Numery telefoniczne muszą być w formacie XX-XXXX-XXXX." + +#: contrib/localflavor/br/forms.py:72 +msgid "This field requires only numbers." +msgstr "To pole może zawierać jedynie liczby." + +#: contrib/localflavor/br/forms.py:74 +msgid "This field requires at most 11 digits or 14 characters." +msgstr "To pole nie może zawierać więcej niż 11 cyfr lub 14 znaków." + +#: contrib/localflavor/br/forms.py:84 +msgid "Invalid CPF number." +msgstr "Błędny numer CPF." + +#: contrib/localflavor/br/forms.py:106 +msgid "This field requires at least 14 digits" +msgstr "To pole musi zawierać co najmniej 14 cyfr." + +#: contrib/localflavor/br/forms.py:116 +msgid "Invalid CNPJ number." +msgstr "Błędny numer CNPJ." + +#: contrib/localflavor/au/forms.py:18 +msgid "Enter a 4 digit post code." +msgstr "Wpisz czterocyfrowy kod pocztowy." + +#: contrib/localflavor/fr/forms.py:17 contrib/localflavor/de/forms.py:16 +#: contrib/localflavor/fi/forms.py:14 +msgid "Enter a zip code in the format XXXXX." +msgstr "Wpisz kod pocztowy w formacie XXXXX." + +#: contrib/localflavor/us/forms.py:18 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "Wpisz kod pocztowy w formacie XXXXX. lub XXXXX-XXXX." + +#: contrib/localflavor/us/forms.py:51 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "Wpisz poprawny numer U.S. Social Security w formacie XXX-XX-XXXX." + +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "" + +#: contrib/localflavor/de/de_states.py:7 +msgid "Berlin" +msgstr "" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:11 +msgid "Hessen" +msgstr "" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "" + +#: contrib/localflavor/de/forms.py:60 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "" +"Podaj poprawny niemiecki numer dowodu osobistego w formacie XXXXXXXXXXX-" +"XXXXXXX-XXXXXXX-X." + +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:6 +msgid "Iwate" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:16 +msgid "Tokyo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +msgid "Shimane" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +msgid "Kagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +msgid "Ehime" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" +msgstr "" + +#: contrib/localflavor/jp/forms.py:21 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "Wpisz kod pocztowy w formacie XXXXXXX lub XXX-XXXX." + +#: contrib/localflavor/it/forms.py:16 +msgid "Enter a valid zip code." +msgstr "Wpisz poprawny kod pocztowy." + +#: contrib/localflavor/it/forms.py:41 +msgid "Enter a valid Social Security number." +msgstr "Wpisz poprawny numer ubezpieczenia socjalnego." + +#: contrib/localflavor/it/forms.py:68 +msgid "Enter a valid VAT number." +msgstr "Wpisz poprawny numer VAT." + +#: contrib/localflavor/no/forms.py:15 contrib/localflavor/ch/forms.py:18 +msgid "Enter a zip code in the format XXXX." +msgstr "Wpisz kod pocztowy w formacie XXXX." + +#: contrib/localflavor/no/forms.py:36 +msgid "Enter a valid Norwegian social security number." +msgstr "Wpis poprawny numer norweskiego ubezpieczenia socjalnego." + +#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45 +msgid "Enter a valid Finnish social security number." +msgstr "Wpis poprawny numer fińskiego ubezpieczenia socjalnego." + +#: contrib/localflavor/ch/ch_states.py:5 +msgid "Aargau" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:6 +msgid "Appenzell Innerrhoden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:7 +msgid "Appenzell Ausserrhoden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:8 +msgid "Basel-Stadt" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:9 +msgid "Basel-Land" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:10 +msgid "Berne" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:11 +msgid "Fribourg" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:12 +msgid "Geneva" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:13 +msgid "Glarus" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:14 +msgid "Graubuenden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:15 +msgid "Jura" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:16 +msgid "Lucerne" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:17 +msgid "Neuchatel" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:18 +msgid "Nidwalden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:19 +msgid "Obwalden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:20 +msgid "Schaffhausen" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:21 +msgid "Schwyz" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:22 +msgid "Solothurn" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:23 +msgid "St. Gallen" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:24 +msgid "Thurgau" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:25 +msgid "Ticino" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:26 +msgid "Uri" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:27 +msgid "Valais" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:28 +msgid "Vaud" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:29 +msgid "Zug" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:30 +msgid "Zurich" +msgstr "" + +#: contrib/localflavor/ch/forms.py:90 +msgid "" +"Enter a valid Swiss identity or passport card number in X1234567<0 or " +"1234567890 format." +msgstr "Podaj poprawny numer szwajarskiego dowodu osobistego lub paszportu w formacie X1234567<0 lub 1234567890." + +#: contrib/localflavor/is_/forms.py:16 +msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "Podaj poprawny numer islandzkiego dowodu osobistego w formacie XXXXXX-XXXX." + +#: contrib/localflavor/is_/forms.py:30 +msgid "The Icelandic identification number is not valid." +msgstr "Numer islandzkiego dowodu osobistego jest błędny." + +#: contrib/localflavor/cl/forms.py:21 +msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "Podaj poprawny czilijski RUT w formacie XX.XXX.XXX-X." + +#: contrib/localflavor/cl/forms.py:26 +msgid "Enter valid a Chilean RUT" +msgstr "Wpisz poprawny czilijski RUT" + +#: contrib/sessions/models.py:68 +msgid "session key" +msgstr "klucz sesji" + +#: contrib/sessions/models.py:69 +msgid "session data" +msgstr "data sesji" + +#: contrib/sessions/models.py:70 +msgid "expire date" +msgstr "data wygaśnięcia sesji" + +#: contrib/sessions/models.py:74 +msgid "session" +msgstr "sesja" + +#: contrib/sessions/models.py:75 +msgid "sessions" +msgstr "sesje" #: contrib/flatpages/models.py:8 -msgid "" -"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." msgstr "" -"Przykład: '/about/contact/'. Upewnij się że wpisałeś otwierający i zamykający slash." - +"Przykład: '/about/contact/'. Upewnij się że wpisałeś otwierający i " +"zamykający ukośnik." #: contrib/flatpages/models.py:9 msgid "title" @@ -1096,11 +2653,11 @@ msgstr "nazwa szablonu" #: 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 "" -"Przykład: 'flatpages/contact_page'. Jeżeli nie podane system użyje " -"'flatpages/default'." +"Przykład: 'flatpages/contact_page.html'. Jeżeli nie zostanie podane, system " +"użyje 'flatpages/default.html'." #: contrib/flatpages/models.py:14 msgid "registration required" @@ -1118,187 +2675,6 @@ msgstr "strona statyczna" msgid "flat pages" msgstr "strony statyczne" -#: contrib/auth/models.py:13 contrib/auth/models.py:26 -msgid "name" -msgstr "nazwa" - -#: contrib/auth/models.py:15 -msgid "codename" -msgstr "nazwa kodowa" - -#: contrib/auth/models.py:17 -msgid "permission" -msgstr "uprawnienie" - -#: contrib/auth/models.py:18 contrib/auth/models.py:27 -msgid "permissions" -msgstr "uprawnienia" - -#: contrib/auth/models.py:29 -msgid "group" -msgstr "grupa" - -#: contrib/auth/models.py:30 contrib/auth/models.py:65 -msgid "groups" -msgstr "grupy" - -#: contrib/auth/models.py:55 -msgid "username" -msgstr "użytkownik" - -#: contrib/auth/models.py:56 -msgid "first name" -msgstr "Imię" - -#: contrib/auth/models.py:57 -msgid "last name" -msgstr "Nazwisko" - -#: contrib/auth/models.py:58 -msgid "e-mail address" -msgstr "adres e-mail" - -#: contrib/auth/models.py:59 -msgid "password" -msgstr "hasło" - -#: contrib/auth/models.py:59 -msgid "Use '[algo]$[salt]$[hexdigest]'" -msgstr "Użyj '[algo]$[salt]$[hexdigest]'" - -#: contrib/auth/models.py:60 -msgid "staff status" -msgstr "w zespole" - -#: contrib/auth/models.py:60 -msgid "Designates whether the user can log into this admin site." -msgstr "Oznacza czy użytkownik może zalogować się do panelu admina." - -#: contrib/auth/models.py:61 -msgid "active" -msgstr "aktywny" - -#: contrib/auth/models.py:62 -msgid "superuser status" -msgstr "Główny Administrator" - -#: contrib/auth/models.py:63 -msgid "last login" -msgstr "ostatnio zalogowany" - -#: contrib/auth/models.py:64 -msgid "date joined" -msgstr "data przyłączenia" - -#: contrib/auth/models.py:66 -msgid "" -"In addition to the permissions manually assigned, this user will also get " -"all permissions granted to each group he/she is in." -msgstr "" -"Oprócz uprawnień przypisanych bezpośrednio użytkownikowi otrzyma on " -"uprawnienia grup, do których należy." - -#: contrib/auth/models.py:67 -msgid "user permissions" -msgstr "uprawnienia użytkownika" - -#kurwa -#: contrib/auth/models.py:70 -msgid "user" -msgstr "użytkownik" - -#: contrib/auth/models.py:71 -msgid "users" -msgstr "użytkownicy" - -#: contrib/auth/models.py:76 -msgid "Personal info" -msgstr "Dane osobowe" - -#: contrib/auth/models.py:77 -msgid "Permissions" -msgstr "Uprawnienia" - -#: contrib/auth/models.py:78 -msgid "Important dates" -msgstr "Ważne daty" - -#: contrib/auth/models.py:79 -msgid "Groups" -msgstr "Grupy" - -#: contrib/auth/models.py:219 -msgid "message" -msgstr "wiadomość" - -#: contrib/auth/forms.py:30 -msgid "" -"Your Web browser doesn't appear to have cookies enabled. Cookies are " -"required for logging in." -msgstr "" -"Twoja przeglądarka nie chce akceptować ciasteczek. Są one " -"wymagane do zalogowania się." - -#: contrib/contenttypes/models.py:25 -msgid "python model class name" -msgstr "nazwa pythonowa modelu klasy" - -#: contrib/contenttypes/models.py:28 -msgid "content type" -msgstr "typ zawartości" - -#: contrib/contenttypes/models.py:29 -msgid "content types" -msgstr "typy zawartości" - -#: contrib/sessions/models.py:35 -msgid "session key" -msgstr "klucz sesji" - -#: contrib/sessions/models.py:36 -msgid "session data" -msgstr "data sesji" - -#: contrib/sessions/models.py:37 -msgid "expire date" -msgstr "data wygaśnięcia sesji" - -#: contrib/sessions/models.py:41 -msgid "session" -msgstr "sesja" - -#: contrib/sessions/models.py:42 -msgid "sessions" -msgstr "sesje" - -#: contrib/sites/models.py:10 -msgid "domain name" -msgstr "nazwa domeny" - -#: contrib/sites/models.py:11 -msgid "display name" -msgstr "wyświetlana nazwa" - -#: contrib/sites/models.py:15 -msgid "site" -msgstr "strona" - -#: contrib/sites/models.py:16 -msgid "sites" -msgstr "strony" - -#: utils/translation.py:360 -msgid "DATE_FORMAT" -msgstr "Y-m-d" - -#: utils/translation.py:361 -msgid "DATETIME_FORMAT" -msgstr "Y-m-d H:i:s" - -#: utils/translation.py:362 -msgid "TIME_FORMAT" -msgstr "H:i:s" - #: utils/dates.py:6 msgid "Monday" msgstr "Poniedziałek" @@ -1487,475 +2863,89 @@ msgid_plural "minutes" msgstr[0] "minuta" msgstr[1] "minut" -#: conf/global_settings.py:37 -msgid "Bengali" -msgstr "Bengalski" - -#: conf/global_settings.py:38 -msgid "Czech" -msgstr "Czeski" - -#: conf/global_settings.py:39 -msgid "Welsh" -msgstr "Walijski" - -#: conf/global_settings.py:40 -msgid "Danish" -msgstr "Duński" - -#: conf/global_settings.py:41 -msgid "German" -msgstr "Niemiecki" - -#: conf/global_settings.py:42 -msgid "Greek" -msgstr "Grecki" - -#: conf/global_settings.py:43 -msgid "English" -msgstr "Angielski" - -#: conf/global_settings.py:44 -msgid "Spanish" -msgstr "Hiszpański" - -#: conf/global_settings.py:45 -msgid "French" -msgstr "Francuski" - -#: conf/global_settings.py:46 -msgid "Galician" -msgstr "Galicyjnski" - -#: conf/global_settings.py:47 -msgid "Hungarian" -msgstr "" - -#: conf/global_settings.py:48 -msgid "Hebrew" -msgstr "Hebrajski" - -#: conf/global_settings.py:49 -msgid "Icelandic" -msgstr "Islandzki" - -#: conf/global_settings.py:50 -msgid "Italian" -msgstr "Włoski" - -#: conf/global_settings.py:51 -msgid "Japanese" -msgstr "Japoński" - -#: conf/global_settings.py:52 -msgid "Dutch" -msgstr "Holenderski" - -#: conf/global_settings.py:53 -msgid "Norwegian" -msgstr "Norweski" - -#: conf/global_settings.py:54 -msgid "Brazilian" -msgstr "Brazylijski" - -#: conf/global_settings.py:55 -msgid "Romanian" -msgstr "Rumuński" - -#: conf/global_settings.py:56 -msgid "Russian" -msgstr "Rosyjski" - -#: conf/global_settings.py:57 -msgid "Slovak" -msgstr "Słowacki" - -#: conf/global_settings.py:58 -msgid "Slovenian" -msgstr "Słowacki" - -#: conf/global_settings.py:59 -msgid "Serbian" -msgstr "Serbski" - -#: conf/global_settings.py:60 -msgid "Swedish" -msgstr "Szwedzki" - -#: conf/global_settings.py:61 -msgid "Ukrainian" -msgstr "Ukraiński" - -#: conf/global_settings.py:62 -msgid "Simplified Chinese" -msgstr "Uproszczony Chiński" - -#: conf/global_settings.py:63 -msgid "Traditional Chinese" -msgstr "Chiński tradycyjny" - -#: core/validators.py:60 -msgid "This value must contain only letters, numbers and underscores." -msgstr "To pole możei zawierać tylko litery, cyfry i podkreślenia" - -#: core/validators.py:64 -msgid "" -"This value must contain only letters, numbers, underscores, dashes or " -"slashes." -msgstr "To pole może zawierać jedynie litery, cyfry, podkreślenia i slasze." - -#: core/validators.py:72 -msgid "Uppercase letters are not allowed here." -msgstr "Wielkie litery nie są tutaj dozwolone" - -#: core/validators.py:76 -msgid "Lowercase letters are not allowed here." -msgstr "Małe litery nie są tutaj dozwolone" - -#: core/validators.py:83 -msgid "Enter only digits separated by commas." -msgstr "Wpisz tylko cyfry odddzielone przecinkami" - -#: core/validators.py:95 -msgid "Enter valid e-mail addresses separated by commas." -msgstr "Wpisz poprawne adresy e-mai oddzielone przecinkamil" - -#: core/validators.py:99 -msgid "Please enter a valid IP address." -msgstr "Proszę wpisać poprawny adres IP" - -#: core/validators.py:103 -msgid "Empty values are not allowed here." -msgstr "Proszę wypełnić te pola" - -#: core/validators.py:107 -msgid "Non-numeric characters aren't allowed here." -msgstr "Tu mogą być tylko cyfry" - -#: core/validators.py:111 -msgid "This value can't be comprised solely of digits." -msgstr "To pole nie może zawierać jedynie cyfr." - -#: core/validators.py:116 -msgid "Enter a whole number." -msgstr "Wpisz całą liczbę" - -#: core/validators.py:120 -msgid "Only alphabetical characters are allowed here." -msgstr "Tutaj są dozwolone tylko litery" - -#: core/validators.py:124 -msgid "Enter a valid date in YYYY-MM-DD format." -msgstr "Proszę wpisać poprawną datę w formacie RRRR-MM-DD." - -#: core/validators.py:128 -msgid "Enter a valid time in HH:MM format." -msgstr "Proszę wpisać poprawny czas w formacie GG: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 "Wprowadź poprawną datę i czas w formacie RRRR-MM-DD GG:MM" - -#: core/validators.py:136 -msgid "Enter a valid e-mail address." -msgstr "Wprowadź poprawny adres e-mail" - -#: core/validators.py:148 -msgid "" -"Upload a valid image. The file you uploaded was either not an image or a " -"corrupted image." -msgstr "" -"Wgraj poprawny plik graficzny. Ten, który został wgrany jest niepoprawny " -"albo uszkodzony." - -#: core/validators.py:155 +#: utils/timesince.py:40 #, python-format -msgid "The URL %s does not point to a valid image." -msgstr "Odnośnik %s nie wskazuje na poprawny plik z obrazem." +msgid "%d milliseconds" +msgstr "%d milisekund" -#: core/validators.py:159 +#: utils/timesince.py:41 #, python-format -msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." -msgstr "" -"Numery telefoniczne muszą być w formacie XXX-XXX-XXXX. \"%s\" jest " -"niepoprawny." +msgid "%(number)d %(type)s" +msgstr "%(number)d %(type)s" -#: core/validators.py:167 +#: utils/timesince.py:47 #, python-format -msgid "The URL %s does not point to a valid QuickTime video." -msgstr "Odnośnik %s nie wskazuje na poprawne plik QuickTime video." +msgid ", %(number)d %(type)s" +msgstr ", %(number)d %(type)s" -#: core/validators.py:171 -msgid "A valid URL is required." -msgstr "Wymagany jest poprawny URL." +#: utils/dateformat.py:40 +msgid "p.m." +msgstr "popołudniu" -#: core/validators.py:185 -#, python-format -msgid "" -"Valid HTML is required. Specific errors are:\n" -"%s" -msgstr "" -"Wymagany jest poprawny odnośnik. Błędy to:\n" -"%s" +#: utils/dateformat.py:41 +msgid "a.m." +msgstr "rano" -#: core/validators.py:192 -#, python-format -msgid "Badly formed XML: %s" -msgstr "Nieprawidłowy format XML: %s" +#: utils/dateformat.py:46 +msgid "PM" +msgstr "popołudniu" -#: core/validators.py:202 -#, python-format -msgid "Invalid URL: %s" -msgstr "Niepoprawny odnośnik: %s" +#: utils/dateformat.py:47 +msgid "AM" +msgstr "rano" -#: core/validators.py:206 core/validators.py:208 -#, python-format -msgid "The URL %s is a broken link." -msgstr "Odnośnik %s jest nieprawidłowy." +#: utils/dateformat.py:95 +msgid "midnight" +msgstr "północ" -#: core/validators.py:214 -msgid "Enter a valid U.S. state abbreviation." -msgstr "Wpisz poprawny kod stanu U.S.A." +#: utils/dateformat.py:97 +msgid "noon" +msgstr "południe" -#: 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] "Nie wolno przeklinać! Słowo %s jest niedozwolone." -msgstr[1] "Nie wolno przeklinać! Słowa %s są niedozwolone." +#: utils/translation/trans_real.py:358 +msgid "DATE_FORMAT" +msgstr "Y-m-d" -#: core/validators.py:236 -#, python-format -msgid "This field must match the '%s' field." -msgstr "To pole musi pasować do pola '%s'." +#: utils/translation/trans_real.py:359 +msgid "DATETIME_FORMAT" +msgstr "Y-m-d H:i:s" -#: core/validators.py:255 -msgid "Please enter something for at least one field." -msgstr "Proszę wpisać cokolwiek do chociaż jednego pola." +#: utils/translation/trans_real.py:360 +msgid "TIME_FORMAT" +msgstr "H:i:s" -#: core/validators.py:264 core/validators.py:275 -msgid "Please enter both fields or leave them both empty." -msgstr "Proszę uzupełnić oba pola lub zostawić je puste." +#: utils/translation/trans_real.py:376 +msgid "YEAR_MONTH_FORMAT" +msgstr "Y-m" -#: core/validators.py:282 -#, python-format -msgid "This field must be given if %(field)s is %(value)s" -msgstr "To pole musi być uzupełnione jeśli %(field)s jest %(value)s" +#: utils/translation/trans_real.py:377 +msgid "MONTH_DAY_FORMAT" +msgstr "m-d" -#: core/validators.py:294 -#, python-format -msgid "This field must be given if %(field)s is not %(value)s" -msgstr "To pole musi być wypełnione jeżeli %(field)s nie jest %(value)s" - -#: core/validators.py:313 -msgid "Duplicate values are not allowed." -msgstr "Duplikaty są niedozwolone." - -#: core/validators.py:336 -#, python-format -msgid "This value must be a power of %s." -msgstr "" - -#: core/validators.py:347 -msgid "Please enter a valid decimal number." -msgstr "Proszę wpisać poprawną liczbę dziesiętną." - -#: 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] "Proszę wpisać poprawną liczbę dziesiętną zawierającą nie więcej niż %s cyfry." -msgstr[1] "Proszę wpisać poprawną liczbę dziesiętną zawierającą nie więcej niż %s cyfr." - -#: 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] "Proszę wpisać poprawną liczbę dziesiętną z dokładnością do %s miejsca po przecinku." -msgstr[1] "Proszę wpisać poprawną liczbę dziesiętną z dokładnością do %s miejsc po przecinku." - -#: core/validators.py:362 -#, python-format -msgid "Make sure your uploaded file is at least %s bytes big." -msgstr "Upewnij się, że wgrany plik ma conajmniej %s bajtów." - -#: core/validators.py:363 -#, python-format -msgid "Make sure your uploaded file is at most %s bytes big." -msgstr "Upewnij się, że wgrany plik nie zawiera więcej niż %s bajtów." - -#: core/validators.py:376 -msgid "The format for this field is wrong." -msgstr "Format tego pola jest nieprawidłowy." - -#: core/validators.py:391 -msgid "This field is invalid." -msgstr "To pole jest nieprawidłowe." - -#: core/validators.py:426 -#, python-format -msgid "Could not retrieve anything from %s." -msgstr "Nie można nic pobrać z %s." - -#: core/validators.py:429 -#, python-format -msgid "" -"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." -msgstr "" -"URL %(url)s zwrócił niepoprawny Content-Type header '%(contenttype)s'." - - -#: core/validators.py:462 -#, python-format -msgid "" -"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " -"\"%(start)s\".)" -msgstr "" - -#: 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 "" - -#: core/validators.py:471 -#, python-format -msgid "" -"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" -"(start)s\".)" -msgstr "" - -#: core/validators.py:476 -#, python-format -msgid "" -"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" -"(start)s\".)" -msgstr "" - -#: 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 "" - -#: 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 "" - -#: db/models/manipulators.py:302 -#, python-format -msgid "%(object)s with this %(type)s already exists for the given %(field)s." -msgstr "" - -#: db/models/fields/__init__.py:40 -#, python-format -msgid "%(optname)s with this %(fieldname)s already exists." -msgstr "" - -#: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265 -#: db/models/fields/__init__.py:542 db/models/fields/__init__.py:553 -#: forms/__init__.py:346 -msgid "This field is required." -msgstr "To pole jest wymagane" - -#: db/models/fields/__init__.py:337 -msgid "This value must be an integer." -msgstr "Ta wartość musi być liczbą całkowitą" - -#: db/models/fields/__init__.py:369 -msgid "This value must be either True or False." -msgstr "Ta wartość musi być logiczna (True, False - prawda lub fałsz)." - -#: db/models/fields/__init__.py:385 -msgid "This field cannot be null." -msgstr "To pole nie może być puste." - -#: db/models/fields/__init__.py:562 -msgid "Enter a valid filename." -msgstr "Wpisz poprawną nazwę pliku." - -#: db/models/fields/related.py:43 -#, python-format -msgid "Please enter a valid %s." -msgstr "Proszę wpisać poprawne %s." - -#: db/models/fields/related.py:579 -msgid "Separate multiple IDs with commas." -msgstr "Oddziel kilka pól ID przecinkami." - -#: db/models/fields/related.py:581 -msgid "" -"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr "" -" Trzymaj przyciśnięty klawisz \"Ctrl\", lub \"Command\" na Macu aby " -"zaznaczyć więcej niż jeden wybór." - -#: db/models/fields/related.py:625 -#, python-format -msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." -msgid_plural "" -"Please enter valid %(self)s IDs. The values %(value)r are invalid." -msgstr[0] "" -msgstr[1] "" - -#: forms/__init__.py:380 -#, python-format -msgid "Ensure your text is less than %s character." -msgid_plural "Ensure your text is less than %s characters." -msgstr[0] "Upewnij się, że tekst ma mniej niż %s znak." -msgstr[1] "Upewnij się, że tekst ma mniej niż %s znaków." - -#: forms/__init__.py:385 -msgid "Line breaks are not allowed here." -msgstr "Znaki nowego wiersza są tutaj niedopuszczalne." - -#: forms/__init__.py:480 forms/__init__.py:551 forms/__init__.py:589 -#, python-format -msgid "Select a valid choice; '%(data)s' is not in %(choices)s." -msgstr "" - -#: forms/__init__.py:645 -msgid "The submitted file is empty." -msgstr "Wgrany plik jest pusty." - -#: forms/__init__.py:699 -msgid "Enter a whole number between -32,768 and 32,767." -msgstr "Proszę wpisać liczbę z zakresu od -32 768 do 32 767" - -#: forms/__init__.py:708 -msgid "Enter a positive number." -msgstr "Proszę wpisać liczbę dodatnią." - -#: forms/__init__.py:717 -msgid "Enter a whole number between 0 and 32,767." -msgstr "Proszę wpisać liczbę z zakresu od 0 do 32 767" - -#: template/defaultfilters.py:379 +#: template/defaultfilters.py:491 msgid "yes,no,maybe" -msgstr "tak,nie, może" +msgstr "tak,nie,może" -#~ msgid "String (up to 50)" -#~ msgstr "Ciąg znaków (do ilości 50 znaków)" +#: template/defaultfilters.py:520 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "%(size)d bajt" +msgstr[1] "%(size)d bajtów" +msgstr[2] "" -#~ msgid "Comment" -#~ msgstr "Komentarz" +#: template/defaultfilters.py:522 +#, python-format +msgid "%.1f KB" +msgstr "%.1f kB" -#~ msgid "Comments" -#~ msgstr "Komentarze" +#: template/defaultfilters.py:524 +#, python-format +msgid "%.1f MB" +msgstr "%.1f MB" -#~ msgid "label" -#~ msgstr "etykieta" +#: template/defaultfilters.py:525 +#, python-format +msgid "%.1f GB" +msgstr "%.1f GB" -#~ msgid "package" -#~ msgstr "pakiet" - -#~ msgid "packages" -#~ msgstr "pakiety" diff --git a/django/conf/locale/sk/LC_MESSAGES/django.mo b/django/conf/locale/sk/LC_MESSAGES/django.mo index c6ac1c9612..2789e1518f 100644 Binary files a/django/conf/locale/sk/LC_MESSAGES/django.mo and b/django/conf/locale/sk/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/sk/LC_MESSAGES/django.po b/django/conf/locale/sk/LC_MESSAGES/django.po index 4e1dba2a49..f1a3cd77a2 100644 --- a/django/conf/locale/sk/LC_MESSAGES/django.po +++ b/django/conf/locale/sk/LC_MESSAGES/django.po @@ -1,200 +1,746 @@ -# Translation of django.po to. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# Vladimir Labath , 2005. -# -#, fuzzy +# +# +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" +"Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-05-27 07:31-0400\n" -"PO-Revision-Date: 2005-11-10 23:22-0500\n" -"Last-Translator: Vladimir Labath \n" -"Language-Team: Slovak \n" +"POT-Creation-Date: 2007-03-31 14:02+0200\n" +"PO-Revision-Date: 2007-04-03 21:49+0200\n" +"Last-Translator: <>\n" +"Language-Team: Slovak\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit" -#: contrib/contenttypes/models.py:25 -msgid "python model class name" -msgstr "pythonové meno triedy modelu" +#: oldforms/__init__.py:357 db/models/fields/__init__.py:117 +#: db/models/fields/__init__.py:274 db/models/fields/__init__.py:610 +#: db/models/fields/__init__.py:621 newforms/models.py:178 +#: newforms/fields.py:78 newforms/fields.py:374 newforms/fields.py:450 +#: newforms/fields.py:461 +msgid "This field is required." +msgstr "Toto pole je povinné." -#: contrib/contenttypes/models.py:28 -msgid "content type" -msgstr "typ obsahu" +#: oldforms/__init__.py:392 +#, python-format +msgid "Ensure your text is less than %s character." +msgstr "Uisite sa, že text je kratší ako %s znakov." -#: contrib/contenttypes/models.py:29 -msgid "content types" -msgstr "typy obsahu" +#: oldforms/__init__.py:397 +msgid "Line breaks are not allowed here." +msgstr "Zalomenia riadkov nie sú povolené." -#: contrib/auth/models.py:13 contrib/auth/models.py:26 -msgid "name" -msgstr "meno" +#: 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 "Vyberte platnú možnosť; '%(data)s' nie je v %(choices)s." -#: contrib/auth/models.py:15 -msgid "codename" -msgstr "codename" +#: oldforms/__init__.py:577 newforms/widgets.py:170 +#: contrib/admin/filterspecs.py:150 +msgid "Unknown" +msgstr "Neznámy" -#: contrib/auth/models.py:17 -msgid "permission" -msgstr "povolenie" +#: oldforms/__init__.py:577 newforms/widgets.py:170 +#: contrib/admin/filterspecs.py:143 +msgid "Yes" +msgstr "Áno" -#: contrib/auth/models.py:18 contrib/auth/models.py:27 -msgid "permissions" -msgstr "povolenia" +#: oldforms/__init__.py:577 newforms/widgets.py:170 +#: contrib/admin/filterspecs.py:143 +msgid "No" +msgstr "Nie" -#: contrib/auth/models.py:29 -msgid "group" -msgstr "skupina" +#: 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 "Súbor nebol odoslaný. Skontrolujte atribút 'enctype' encoding vo formulári." -#: contrib/auth/models.py:30 contrib/auth/models.py:65 -msgid "groups" -msgstr "skupiny" +#: oldforms/__init__.py:674 +msgid "The submitted file is empty." +msgstr "Odoslaný súbor je prázdný." -#: contrib/auth/models.py:55 -msgid "username" -msgstr "užívateľské meno" +#: oldforms/__init__.py:730 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "Zadajte celé číslo s hodnotou medzi -32768 a 32767." -#: contrib/auth/models.py:56 -msgid "first name" -msgstr "krstné meno" +#: oldforms/__init__.py:740 +msgid "Enter a positive number." +msgstr "Zadajte celé kladné číslo." -#: contrib/auth/models.py:57 -msgid "last name" -msgstr "priezvisko" +#: oldforms/__init__.py:750 +msgid "Enter a whole number between 0 and 32,767." +msgstr "Zadajte celé číslo s hodnotou medzi 0 a 32767." -#: contrib/auth/models.py:58 -msgid "e-mail address" -msgstr "e-mailová adresa" +#: db/models/manipulators.py:307 +#, python-format +msgid "%(object)s with this %(type)s already exists for the given %(field)s." +msgstr "%(object)s s %(type)s už existuje pre prvok %(field)s." -#: contrib/auth/models.py:59 -msgid "password" -msgstr "heslo" +#: 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 "a" -#: contrib/auth/models.py:59 -msgid "Use '[algo]$[salt]$[hexdigest]'" -msgstr "Použi '[algo]$[salt]$[hexdigest]'" +#: db/models/fields/__init__.py:42 +#, python-format +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "%(optname)s s %(fieldname)s už existuje." -#: contrib/auth/models.py:60 -msgid "staff status" -msgstr "štatút zamestnanca" +#: db/models/fields/__init__.py:367 +msgid "This value must be an integer." +msgstr "Táto hodnota musí byť celé číslo." -#: contrib/auth/models.py:60 -msgid "Designates whether the user can log into this admin site." -msgstr "Označenie, ak užívateľ má oprávnenie vstúpiť ako administrátor." +#: db/models/fields/__init__.py:402 +msgid "This value must be either True or False." +msgstr "Táto hodnota musí byť True alebo False." -#: contrib/auth/models.py:61 -msgid "active" -msgstr "aktívny" +#: db/models/fields/__init__.py:423 +msgid "This field cannot be null." +msgstr "Toto pole nemôže obsahovať null." -#: contrib/auth/models.py:62 -msgid "superuser status" -msgstr "štatút superužívateľa" +#: db/models/fields/__init__.py:457 core/validators.py:148 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Zadajte platný dátum vo formáte RRRR-MM-DD." -#: contrib/auth/models.py:63 -msgid "last login" -msgstr "posledné prihlásenie" +#: db/models/fields/__init__.py:526 core/validators.py:157 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "Zadajte platný dátum a čas vo formáte RRRR-MM-DD HH:MM." -#: contrib/auth/models.py:64 -msgid "date joined" -msgstr "dátum registrácie" +#: db/models/fields/__init__.py:630 +msgid "Enter a valid filename." +msgstr "Zadajte platný názov súboru." -#: contrib/auth/models.py:66 +#: db/models/fields/__init__.py:751 +msgid "This value must be either None, True or False." +msgstr "Táto hodnota musí byť None, True alebo False." + +#: db/models/fields/related.py:53 +#, python-format +msgid "Please enter a valid %s." +msgstr "Prosím, zadajte platné %s." + +#: db/models/fields/related.py:642 +msgid "Separate multiple IDs with commas." +msgstr "Oddeľte viacnásobné ID čiarkami." + +#: db/models/fields/related.py:644 msgid "" -"In addition to the permissions manually assigned, this user will also get " -"all permissions granted to each group he/she is in." -msgstr "" -"Okrem ručne vložených povolení, tento uživateľ dostane všetky povolenia " -"skupin, v ktorých sa nachádza." +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "Ak chcete vybrať viacero možností, podržte \"Control\" alebo \"Command\" na Mac-u." -#: contrib/auth/models.py:67 -msgid "user permissions" -msgstr "pridelené povolenia" +#: db/models/fields/related.py:691 +#, 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 "Prosím, vložte platné %(self)s ID-čka. Hodnota %(value)r je neplatná." +"Prosím, vložte platné %(self)s ID-čka. Hodnoty %(value)r sú neplatné." -#: contrib/auth/models.py:70 -msgid "user" -msgstr "uživateľ" +#: conf/global_settings.py:39 +msgid "Arabic" +msgstr "Arabsky" -#: contrib/auth/models.py:71 -msgid "users" -msgstr "užívatelia" +#: conf/global_settings.py:40 +msgid "Bengali" +msgstr "Bengálsky" -#: contrib/auth/models.py:76 -msgid "Personal info" -msgstr "Osobné údaje" +#: conf/global_settings.py:41 +msgid "Catalan" +msgstr "Katalánsky" -#: contrib/auth/models.py:77 -msgid "Permissions" -msgstr "Povolenia" +#: conf/global_settings.py:42 +msgid "Czech" +msgstr "Česky" -#: contrib/auth/models.py:78 -msgid "Important dates" -msgstr "Dôležité údaje" +#: conf/global_settings.py:43 +msgid "Welsh" +msgstr "Welšsky" -#: contrib/auth/models.py:79 -msgid "Groups" -msgstr "Skupiny" +#: conf/global_settings.py:44 +msgid "Danish" +msgstr "Dánsky" -#: contrib/auth/models.py:219 -msgid "message" -msgstr "zpráva" +#: conf/global_settings.py:45 +msgid "German" +msgstr "Nemecky" -#: contrib/auth/forms.py:30 +#: conf/global_settings.py:46 +msgid "Greek" +msgstr "Grécky" + +#: conf/global_settings.py:47 +msgid "English" +msgstr "Anglicky" + +#: conf/global_settings.py:48 +msgid "Spanish" +msgstr "Španielsky" + +#: conf/global_settings.py:49 +msgid "Argentinean Spanish" +msgstr "Argentínska španielčina" + +#: conf/global_settings.py:50 +msgid "Finnish" +msgstr "Fínsky" + +#: conf/global_settings.py:51 +msgid "French" +msgstr "Francúzsky" + +#: conf/global_settings.py:52 +msgid "Galician" +msgstr "Galicijsky" + +#: conf/global_settings.py:53 +msgid "Hungarian" +msgstr "Maďarsky" + +#: conf/global_settings.py:54 +msgid "Hebrew" +msgstr "Hebrejsky" + +#: conf/global_settings.py:55 +msgid "Icelandic" +msgstr "Islandsky" + +#: conf/global_settings.py:56 +msgid "Italian" +msgstr "Taliansky" + +#: conf/global_settings.py:57 +msgid "Japanese" +msgstr "Japonsky" + +#: conf/global_settings.py:58 +msgid "Kannada" +msgstr "Kannada" + +#: conf/global_settings.py:59 +msgid "Latvian" +msgstr "Lotyšsky" + +#: conf/global_settings.py:60 +msgid "Macedonian" +msgstr "Mecedónsky" + +#: conf/global_settings.py:61 +msgid "Dutch" +msgstr "Holandsky" + +#: conf/global_settings.py:62 +msgid "Norwegian" +msgstr "Nórsky" + +#: conf/global_settings.py:63 +msgid "Polish" +msgstr "Poľsky" + +#: conf/global_settings.py:64 +msgid "Portugese" +msgstr "Portugalsky" + +#: conf/global_settings.py:65 +msgid "Brazilian" +msgstr "Brazílsky" + +#: conf/global_settings.py:66 +msgid "Romanian" +msgstr "Rumunsky" + +#: conf/global_settings.py:67 +msgid "Russian" +msgstr "Rusky" + +#: conf/global_settings.py:68 +msgid "Slovak" +msgstr "Slovensky" + +#: conf/global_settings.py:69 +msgid "Slovenian" +msgstr "Slovinsky" + +#: conf/global_settings.py:70 +msgid "Serbian" +msgstr "Srbsky" + +#: conf/global_settings.py:71 +msgid "Swedish" +msgstr "Švédsky" + +#: conf/global_settings.py:72 +msgid "Tamil" +msgstr "Tamilsky" + +#: conf/global_settings.py:73 +msgid "Telugu" +msgstr "Telugu" + +#: conf/global_settings.py:74 +msgid "Turkish" +msgstr "Turecky" + +#: conf/global_settings.py:75 +msgid "Ukrainian" +msgstr "Ukrajinsky" + +#: conf/global_settings.py:76 +msgid "Simplified Chinese" +msgstr "Čínsky (zjednodušene)" + +#: conf/global_settings.py:77 +msgid "Traditional Chinese" +msgstr "Čínsky (tradične)" + +#: core/validators.py:64 +msgid "This value must contain only letters, numbers and underscores." +msgstr "Táto hodnota môže obsahovať len písmená, číslice a podčiarkovníky." + +#: core/validators.py:68 msgid "" -"Your Web browser doesn't appear to have cookies enabled. Cookies are " -"required for logging in." -msgstr "" -"Vyzerá, že tvoj web prehliadač nedovoľuje prístup ku cookies. Cookies sú " -"nevýhnutné aby si sa mohol prihlásiť." +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "Táto hodnota môže obsahovať len písmena, číslice, podčiarkovniky, pomlčky a lomítka." -#: contrib/auth/forms.py:36 contrib/auth/forms.py:41 -#: contrib/admin/views/decorators.py:9 +#: core/validators.py:72 +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "Táto hodnota môže obsahovať len písmená, číslice, počiarkovníky a pomlčky." + +#: core/validators.py:76 +msgid "Uppercase letters are not allowed here." +msgstr "Veľké písmená nie sú povolené." + +#: core/validators.py:80 +msgid "Lowercase letters are not allowed here." +msgstr "Malé písmena nie sú povolené." + +#: core/validators.py:87 +msgid "Enter only digits separated by commas." +msgstr "Zadávajte len číslice oddelené čiarkami." + +#: core/validators.py:99 +msgid "Enter valid e-mail addresses separated by commas." +msgstr "Zadajte platné e-mailové adresy oddelené čiarkami." + +#: core/validators.py:103 +msgid "Please enter a valid IP address." +msgstr "Prosím, zadajte platnú IP adresu." + +#: core/validators.py:107 +msgid "Empty values are not allowed here." +msgstr "Prázdne hodnoty tu nie sú povolené." + +#: core/validators.py:111 +msgid "Non-numeric characters aren't allowed here." +msgstr "Iné ako numerické znaky tu nie sú povolené." + +#: core/validators.py:115 +msgid "This value can't be comprised solely of digits." +msgstr "Táto hodnota nemôže byť čisto numerická." + +#: core/validators.py:120 newforms/fields.py:126 +msgid "Enter a whole number." +msgstr "Zadajte celé číslo." + +#: core/validators.py:124 +msgid "Only alphabetical characters are allowed here." +msgstr "Tu sú povolené len alfanumerické znaky." + +#: core/validators.py:139 +msgid "Year must be 1900 or later." +msgstr "Rok musí byť 1900 alebo neskôr." + +#: core/validators.py:143 +#, python-format +msgid "Invalid date: %s" +msgstr "Neplatný dátum: %s" + +#: core/validators.py:153 +msgid "Enter a valid time in HH:MM format." +msgstr "Zadajte platný čas vo formáte HH:MM." + +#: core/validators.py:162 newforms/fields.py:269 +msgid "Enter a valid e-mail address." +msgstr "Zadajte platnú e-mailovú adresu." + +#: core/validators.py:178 msgid "" -"Please enter a correct username and password. Note that both fields are case-" -"sensitive." -msgstr "" -"Prosím, vlož spávne meno užvateľa ako aj heslo. Pripomínam, že obe polia " -"rozlišujú malé a veľké písmena" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "Nahrajte platný obrázok. Súbor, ktorý ste odoslali nebol obrázkový formát alebo bol poškodený." + +#: core/validators.py:185 +#, python-format +msgid "The URL %s does not point to a valid image." +msgstr "URL %s neodkazuje na platný obrázok." + +#: core/validators.py:189 +#, python-format +msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +msgstr "Telefónne číslo musí mať formát XXX-XXX-XXXX. Číslo \"%s\" je neplatné." + +#: core/validators.py:197 +#, python-format +msgid "The URL %s does not point to a valid QuickTime video." +msgstr "URL %s neodkazuje na platné QuickTime video." + +#: core/validators.py:201 +msgid "A valid URL is required." +msgstr "Je požadovaná platná adresa URL." + +#: core/validators.py:215 +#, python-format +msgid "" +"Valid HTML is required. Specific errors are:\n" +"%s" +msgstr "HTML kód musí zodpovedať špecifikácii. Zistené chyby sú:\n" +"%s" + +#: core/validators.py:222 +#, python-format +msgid "Badly formed XML: %s" +msgstr "Chybné XML nezodpovedajúce definícii: %s" + +#: core/validators.py:239 +#, python-format +msgid "Invalid URL: %s" +msgstr "Neplatná adresa URL: %s" + +#: core/validators.py:244 core/validators.py:246 +#, python-format +msgid "The URL %s is a broken link." +msgstr "Odkaz na URL %s je neplatný." + +#: core/validators.py:252 +msgid "Enter a valid U.S. state abbreviation." +msgstr "Zadajte platnú skratku štátu USA." + +#: core/validators.py:266 +#, python-format +msgid "Watch your mouth! The word %s is not allowed here." +msgstr "Vyjadrujte sa slušne! Slovo %s tu nie je dovolené použivať." + +#: core/validators.py:273 +#, python-format +msgid "This field must match the '%s' field." +msgstr "Toto pole sa musí zhodovať s poľom '%s'. " + +#: core/validators.py:292 +msgid "Please enter something for at least one field." +msgstr "Prosím, vyplňte aspoň jedno pole." + +#: core/validators.py:301 core/validators.py:312 +msgid "Please enter both fields or leave them both empty." +msgstr "Prosím, vyplňte buď obidve polia, alebo ich nechajte prázdne." + +#: core/validators.py:320 +#, python-format +msgid "This field must be given if %(field)s is %(value)s" +msgstr "Toto pole musí byť vyplnené ak, %(field)s je %(value)s" + +#: core/validators.py:333 +#, python-format +msgid "This field must be given if %(field)s is not %(value)s" +msgstr "Toto pole musí byť vyplnené, ak %(field)s nie je %(value)s" + +#: core/validators.py:352 +msgid "Duplicate values are not allowed." +msgstr "Duplicitné hodnoty nie sú povolené." + +#: core/validators.py:367 +#, python-format +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "Táto hodnota musí byť medzi %(lower)s a %(upper)s." + +#: core/validators.py:369 +#, python-format +msgid "This value must be at least %s." +msgstr "Táto hodnota musí byť prinajmenšom %s." + +#: core/validators.py:371 +#, python-format +msgid "This value must be no more than %s." +msgstr "Táto hodnota musí byť väčšia ako %s." + +#: core/validators.py:407 +#, python-format +msgid "This value must be a power of %s." +msgstr "Táto hodnota musí byť mocninou %s." + +#: core/validators.py:418 +msgid "Please enter a valid decimal number." +msgstr "Prosím, vložte platné desatinné číslo. " + +#: core/validators.py:422 +#, 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 "Prosím vlož platné desatinné číslo s najviac %s číslicou." +"Prosím vlož platné desatinné číslo s najviac %s číslicami." + +#: core/validators.py:425 +#, python-format +msgid "" +"Please enter a valid decimal number with a whole part of at most %s digit." +"Please enter a valid decimal number with a whole part of at most %s digits." +msgstr "Prosím, zadajte platné desatinné číslo s najviac %s číslicou pred desatinnou čiarkou." +"Prosím, zadajte platné desatinné číslo s najviac %s číslicami pred desatinnou čiarkou." + +#: core/validators.py:428 +#, 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 "Prosím, zadajte platné desatinné číslo s najviac %s desatinným miestom." +"Prosím, zadajte platné desatinné číslo s najviac %s desatinnými miestami." + +#: core/validators.py:438 +#, python-format +msgid "Make sure your uploaded file is at least %s bytes big." +msgstr "Uistite sa, že posielaný súbor nemá menej ako %s bajtov." + +#: core/validators.py:439 +#, python-format +msgid "Make sure your uploaded file is at most %s bytes big." +msgstr "Uistite sa, že posielaný súbor nemá viac ako %s bajtov." + +#: core/validators.py:456 +msgid "The format for this field is wrong." +msgstr "Formát pre toto pole je chybný." + +#: core/validators.py:471 +msgid "This field is invalid." +msgstr "Toto pole nie je platné." + +#: core/validators.py:507 +#, python-format +msgid "Could not retrieve anything from %s." +msgstr "Z %s nič neprišlo." + +#: core/validators.py:510 +#, python-format +msgid "" +"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "Adresa URL %(url)s vrátila v hlavičke neplatný Content-Type '%(contenttype)s'." + +#: core/validators.py:543 +#, python-format +msgid "" +"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " +"\"%(start)s\".)" +msgstr "Prosím, uzatvorte tag %(tag)s na riadku %(line)s. (Riadok začína " +"s \"%(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 "Text začínajúci na riadku %(line)s nie je povolený v tomto kontexte. (Riadok začína s \"%(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\" na riadku %(line)s je neplatný atribút. (Riadok začína s \"%" +"(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>\" na riadku %(line)s je neplatný tag. (Riadok začína s \"%" +"(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 "V tagu na riadku %(line)s chýba jeden alebo viac atribútov. (Riadok " +"začína s \"%(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 "Atribút \"%(attr)s\" na riadku %(line)s má neplatnú hodnotu. (Riadok začína " +"s \"%(start)s\".)" + +#: views/generic/create_update.py:43 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "Objekt %(verbose_name)s bol úspešne vytvorený." + +#: views/generic/create_update.py:117 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "Objekt %(verbose_name)s bol úspešne zmenený." + +#: views/generic/create_update.py:184 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "Objekt %(verbose_name)s bol zmazaný." + +#: newforms/models.py:165 newforms/fields.py:360 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "Vyberte platnú možnosť. Vybraná položka nepatrí medzi platné možnosti." + +#: newforms/models.py:182 newforms/fields.py:378 newforms/fields.py:454 +msgid "Enter a list of values." +msgstr "Vložte zoznam hodnôt." + +#: newforms/models.py:188 newforms/fields.py:387 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "Vyberte platnú možnost. %s nepatrí medzi dostupné možnosti." + +#: newforms/fields.py:101 newforms/fields.py:254 +#, python-format +msgid "Ensure this value has at most %d characters." +msgstr "Uistite sa, že hodnota má najviac %d znakov." + +#: newforms/fields.py:103 newforms/fields.py:256 +#, python-format +msgid "Ensure this value has at least %d characters." +msgstr "Uistite sa, že zadaná hodnota má menej ako %d znakov." + +#: newforms/fields.py:128 +#, python-format +msgid "Ensure this value is less than or equal to %s." +msgstr "Uistite sa, že táto hodnota je menšia alebo rovná %s." + +#: newforms/fields.py:130 +#, python-format +msgid "Ensure this value is greater than or equal to %s." +msgstr "Uistite sa, že hodnota je väčšia alebo rovná %s." + +#: newforms/fields.py:163 +msgid "Enter a valid date." +msgstr "Zadajte platný dátum." + +#: newforms/fields.py:190 +msgid "Enter a valid time." +msgstr "Zadajte platný čas." + +#: newforms/fields.py:226 +msgid "Enter a valid date/time." +msgstr "Zadajte platný dátum a čas." + +#: newforms/fields.py:240 +msgid "Enter a valid value." +msgstr "Zadajte platnú hodnotu." + +#: newforms/fields.py:287 newforms/fields.py:309 +msgid "Enter a valid URL." +msgstr "Zadajte platnú adresu URL." + +#: newforms/fields.py:311 +msgid "This URL appears to be a broken link." +msgstr "Odkaz na URL neexistuje." + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "th" +msgstr "th" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "st" +msgstr "st" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "nd" +msgstr "nd" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "rd" +msgstr "rd" + +#: contrib/humanize/templatetags/humanize.py:47 +#, python-format +msgid "%(value).1f million" +msgstr "%(value).1f milión" + +#: contrib/humanize/templatetags/humanize.py:50 +#, python-format +msgid "%(value).1f billion" +msgstr "%(value).1f miliarda" + +#: contrib/humanize/templatetags/humanize.py:53 +#, python-format +msgid "%(value).1f trillion" +msgstr "%(value).1f bilión" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "one" +msgstr "jeden" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "two" +msgstr "dva" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "three" +msgstr "tri" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "four" +msgstr "štyri" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "five" +msgstr "päť" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "six" +msgstr "šesť" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "seven" +msgstr "sedem" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "eight" +msgstr "osem" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "nine" +msgstr "deväť" #: contrib/redirects/models.py:7 msgid "redirect from" -msgstr "presmerovaný z" +msgstr "presmerovať z" #: contrib/redirects/models.py:8 msgid "" "This should be an absolute path, excluding the domain name. Example: '/" "events/search/'." -msgstr "" -"Tu by sa mala použiť absolútna cesta, bez domény. Napr.: '/events/search/'." +msgstr "Tu by sa mala použiť absolútna cesta bez názvu domény. Napríklad: '/events/search/'." #: contrib/redirects/models.py:9 msgid "redirect to" -msgstr "presmerovaný na " +msgstr "presmerovať na " #: contrib/redirects/models.py:10 msgid "" "This can be either an absolute path (as above) or a full URL starting with " "'http://'." -msgstr "" -"Tu môže byť buď absolútna cesta (ako hore) alebo plné URL začínajúce s " -"'http://'." +msgstr "Tu môže byť buď absolútna cesta (ako je uvedené vyššie) alebo úplná adresa URL začínajúca s 'http://'." -#: contrib/redirects/models.py:12 +#: contrib/redirects/models.py:13 msgid "redirect" msgstr "presmerovanie" -#: contrib/redirects/models.py:13 +#: contrib/redirects/models.py:14 msgid "redirects" msgstr "presmerovania" #: contrib/comments/models.py:67 contrib/comments/models.py:166 msgid "object ID" -msgstr "objekt ID" +msgstr "ID objektu" #: contrib/comments/models.py:68 msgid "headline" -msgstr "titulok" +msgstr "nadpis" #: contrib/comments/models.py:69 contrib/comments/models.py:90 #: contrib/comments/models.py:167 @@ -239,13 +785,13 @@ msgstr "je platné hodnotenie" #: contrib/comments/models.py:83 contrib/comments/models.py:169 msgid "date/time submitted" -msgstr "dátum/čas poslania" +msgstr "dátum a čas odoslania" #: contrib/comments/models.py:84 contrib/comments/models.py:170 msgid "is public" -msgstr "je zveréjnený" +msgstr "je verejný" -#: contrib/comments/models.py:85 contrib/admin/views/doc.py:292 +#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304 msgid "IP address" msgstr "IP adresa" @@ -257,9 +803,7 @@ msgstr "je vymazaný" msgid "" "Check this box if the comment is inappropriate. A \"This comment has been " "removed\" message will be displayed instead." -msgstr "" -"Ak je tento komentár nevhodný, tu ho poznač. \"Tento komentár bol vymazaný" -"\" táto správa sa objaví namiesto neho." +msgstr "Zaškrtnite toto pole, ak je komentár nevhodný. Správa \"Tento komenár bol zmazaný\" sa bude zobrazovať namiesto neho." #: contrib/comments/models.py:91 msgid "comments" @@ -278,7 +822,7 @@ msgid "" "\n" "http://%(domain)s%(url)s" msgstr "" -"Od %(user)s dňa %(date)s\n" +"Pridaný užívateľom %(user)s dňa %(date)s\n" "\n" "%(comment)s\n" "\n" @@ -286,7 +830,7 @@ msgstr "" #: contrib/comments/models.py:168 msgid "person's name" -msgstr "osobné meno" +msgstr "meno osoby" #: contrib/comments/models.py:171 msgid "ip address" @@ -306,24 +850,24 @@ msgstr "voľné komentáre" #: contrib/comments/models.py:233 msgid "score" -msgstr "stav" +msgstr "stav skóre" #: contrib/comments/models.py:234 msgid "score date" -msgstr "údaje stavu" +msgstr "dátum stavu skóre" #: contrib/comments/models.py:237 msgid "karma score" -msgstr "karma údaj" +msgstr "karma" #: contrib/comments/models.py:238 msgid "karma scores" -msgstr "karma údaje" +msgstr "karma" #: contrib/comments/models.py:242 #, python-format msgid "%(score)d rating by %(user)s" -msgstr "%(score)d hodnotiteľ %(user)s" +msgstr "%(score)d od hodnotiteľa %(user)s" #: contrib/comments/models.py:258 #, python-format @@ -331,22 +875,21 @@ msgid "" "This comment was flagged by %(user)s:\n" "\n" "%(text)s" -msgstr "" -"Tento komentár bol označený užívateľom %(user)s:\n" +msgstr "Tento komentár bol označený užívateľom %(user)s:\n" "\n" "%(text)s" #: contrib/comments/models.py:265 msgid "flag date" -msgstr "dátumové návestie" +msgstr "dátumové príznak" #: contrib/comments/models.py:268 msgid "user flag" -msgstr "návestie uživateľa" +msgstr "uživateľský príznak" #: contrib/comments/models.py:269 msgid "user flags" -msgstr "návestia užívateľa" +msgstr "užívateľské príznaky" #: contrib/comments/models.py:273 #, python-format @@ -355,20 +898,20 @@ msgstr " %r návestie" #: contrib/comments/models.py:278 msgid "deletion date" -msgstr "odstránené dátumy" +msgstr "dátum zmazania" #: contrib/comments/models.py:280 msgid "moderator deletion" -msgstr "moderátor odstránenia" +msgstr "zmazania moderátorom" #: contrib/comments/models.py:281 msgid "moderator deletions" -msgstr "moderátor odstránení" +msgstr "Zmazané moderátorom" #: contrib/comments/models.py:285 #, python-format msgid "Moderator deletion by %r" -msgstr "Moderátor odstránenia %r" +msgstr "Zmazanané moderátorom %r" #: contrib/comments/views/karma.py:19 msgid "Anonymous users cannot vote" @@ -380,89 +923,71 @@ msgstr "Chybné ID komentára" #: contrib/comments/views/karma.py:25 msgid "No voting for yourself" -msgstr "Nemôžeš hlasovať za seba" +msgstr "Nemôžete hlasovať za samého seba" -#: 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 "Toto hlasovanie je nevyhnutné, lebo súvisí s predchádzjúcou voľbou." -#: 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[0] "" -"Tento komentár je od užívateľa, ktorý doteraz poslal minimálne %(count)s " +msgstr "" +"Tento komentár je od užívateľa, ktorý doteraz poslal menej ako %(count)s " "komentár:\n" "\n" "%(text)s" -msgstr[1] "" -"Tento komentár je od užívateľa, ktorý doteraz poslal najmenej %(count)s " +"Tento komentár je od užívateľa, ktorý doteraz poslal menej ako %(count)s " "komentárov:\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 "" -"Tento komentár je od veľmi náznakového užívateľa:\n" +msgstr "Tento komentár je od užívateľa, ktorý sa rád vyjadruje v náznakoch:\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 "Dovolené sú len 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 "Jedno alebo viac povinných polí nebolo vložených" -#: 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 "Niekto skúšal manipulovať s formulárom komentára (porušená bezpečnosť)" +msgstr "Niekto sa pokúšal manipulovať s formulárom komentára (porušenie bezpečnosti)" -#: 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 "" -"Formulár komentára ma chybný 'cieľový' parameter -- the objekt ID bol " -"poškodený" +"Formulár komentára ma chybný 'target' parameter -- ID objektu je neplatné" #: contrib/comments/views/comments.py:257 #: contrib/comments/views/comments.py:321 msgid "The comment form didn't provide either 'preview' or 'post'" -msgstr "Formulár komentára neposkytuje odpoveď buď 'prezri' alebo 'pošli'" - -#: contrib/comments/templates/comments/freeform.html:4 -msgid "Your name:" -msgstr "Tvoje meno:" - -#: contrib/comments/templates/comments/freeform.html:5 -#: contrib/comments/templates/comments/form.html:27 -msgid "Comment:" -msgstr "Komentár:" - -#: contrib/comments/templates/comments/freeform.html:9 -#: contrib/comments/templates/comments/form.html:32 -msgid "Preview comment" -msgstr "Pozri komentár" +msgstr "Formulár komentára neobsahuje ani jednu z možností 'náhľad' alebo 'odoslať'." #: contrib/comments/templates/comments/form.html:6 #: contrib/comments/templates/comments/form.html:8 @@ -471,35 +996,36 @@ msgid "Username:" msgstr "Meno:" #: contrib/comments/templates/comments/form.html:6 -#: contrib/admin/templates/admin/login.html:20 -msgid "Password:" -msgstr "Heslo:" - -#: contrib/comments/templates/comments/form.html:6 -msgid "Forgotten your password?" -msgstr "Zabudol si svoje heslo?" - -#: 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/object_history.html:3 #: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/admin/base.html:23 #: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 #: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 #: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 #: contrib/admin/templates/admin_doc/missing_docutils.html:4 #: contrib/admin/templates/admin_doc/view_index.html:5 #: contrib/admin/templates/admin_doc/model_detail.html:3 #: contrib/admin/templates/admin_doc/index.html:4 #: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 msgid "Log out" msgstr "Odhlásenie" +#: contrib/comments/templates/comments/form.html:8 +#: contrib/admin/templates/admin/login.html:20 +msgid "Password:" +msgstr "Heslo:" + +#: contrib/comments/templates/comments/form.html:8 +msgid "Forgotten your password?" +msgstr "Zabudli ste heslo?" + #: contrib/comments/templates/comments/form.html:12 msgid "Ratings" msgstr "Hodnotenia" @@ -512,87 +1038,29 @@ msgstr "Požadované" #: contrib/comments/templates/comments/form.html:12 #: contrib/comments/templates/comments/form.html:23 msgid "Optional" -msgstr "Voliteľné" +msgstr "Nepovinné" #: contrib/comments/templates/comments/form.html:23 msgid "Post a photo" msgstr "Pošli foto" -#: contrib/flatpages/models.py:7 contrib/admin/views/doc.py:303 -msgid "URL" -msgstr "URL" +#: contrib/comments/templates/comments/form.html:28 +#: contrib/comments/templates/comments/freeform.html:5 +msgid "Comment:" +msgstr "Komentár:" -#: contrib/flatpages/models.py:8 -msgid "" -"Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "" -"Príklad: '/about/contact/'. Uisti sa, že máš vložené ako úvodné tak aj " -"záverečné lomítka." +#: contrib/comments/templates/comments/form.html:35 +#: contrib/comments/templates/comments/freeform.html:10 +msgid "Preview comment" +msgstr "Náhľad komentára" -#: contrib/flatpages/models.py:9 -msgid "title" -msgstr "názov" - -#: contrib/flatpages/models.py:10 -msgid "content" -msgstr "obsah" - -#: contrib/flatpages/models.py:11 -msgid "enable comments" -msgstr "povolené komentáre" - -#: contrib/flatpages/models.py:12 -msgid "template name" -msgstr "meno predlohy" - -#: contrib/flatpages/models.py:13 -msgid "" -"Example: 'flatpages/contact_page'. If this isn't provided, the system will " -"use 'flatpages/default'." -msgstr "" -"Príklad: 'flatpages/contact_page'. Ak sa toto nevykonalo, systém použije " -"'flatpages/default'." - -#: contrib/flatpages/models.py:14 -msgid "registration required" -msgstr "musíte byť zaregistrovaný" - -#: contrib/flatpages/models.py:14 -msgid "If this is checked, only logged-in users will be able to view the page." -msgstr "" -"Ak je toto označené, potom len prihlásený užívateľ môže vidieť túto stránku." - -#: contrib/flatpages/models.py:18 -msgid "flat page" -msgstr "plochá stránka" - -#: contrib/flatpages/models.py:19 -msgid "flat pages" -msgstr "ploché stránky" - -#: contrib/sessions/models.py:35 -msgid "session key" -msgstr "kľúč sedenia" - -#: contrib/sessions/models.py:36 -msgid "session data" -msgstr "údaje sedenia" - -#: contrib/sessions/models.py:37 -msgid "expire date" -msgstr "dátum konca platnosti" - -#: contrib/sessions/models.py:41 -msgid "session" -msgstr "sedenie" - -#: contrib/sessions/models.py:42 -msgid "sessions" -msgstr "sedenia" +#: contrib/comments/templates/comments/freeform.html:4 +msgid "Your name:" +msgstr "Tvoje meno:" #: contrib/sites/models.py:10 msgid "domain name" -msgstr "meno domény" +msgstr "názov domény" #: contrib/sites/models.py:11 msgid "display name" @@ -616,7 +1084,7 @@ msgstr "" "
                              \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 "Všetko" @@ -640,25 +1108,13 @@ msgstr "Tento mesiac" msgid "This year" msgstr "Tento rok" -#: contrib/admin/filterspecs.py:143 -msgid "Yes" -msgstr "Áno" - -#: contrib/admin/filterspecs.py:143 -msgid "No" -msgstr "Nie" - -#: contrib/admin/filterspecs.py:150 -msgid "Unknown" -msgstr "Neznámy" - #: contrib/admin/models.py:16 msgid "action time" msgstr "čas udalosti" #: contrib/admin/models.py:19 msgid "object id" -msgstr "objekt id" +msgstr "id objektu" #: contrib/admin/models.py:20 msgid "object repr" @@ -666,11 +1122,11 @@ msgstr "objekt repr" #: contrib/admin/models.py:21 msgid "action flag" -msgstr "návestie udalosti" +msgstr "príznak udalosti" #: contrib/admin/models.py:22 msgid "change message" -msgstr "zmeň zprávu" +msgstr "zmeniť zprávu" #: contrib/admin/models.py:25 msgid "log entry" @@ -680,93 +1136,72 @@ msgstr "záznam priebehu" msgid "log entries" msgstr "záznamy priebehu" -#: contrib/admin/templatetags/admin_list.py:228 +#: contrib/admin/templatetags/admin_list.py:247 msgid "All dates" msgstr "Všetky dátumy" -#: contrib/admin/views/decorators.py:23 -#: contrib/admin/templates/admin/login.html:25 -msgid "Log in" -msgstr "Prihlásenie" - -#: contrib/admin/views/decorators.py:61 -msgid "" -"Please log in again, because your session has expired. Don't worry: Your " -"submission has been saved." -msgstr "" -"Prosím prihlas sa znovu, lebo čas tvojho sedenia vypršal. Nemaj obavy: tvoje " -"údaje su uchované." - -#: contrib/admin/views/decorators.py:68 -msgid "" -"Looks like your browser isn't configured to accept cookies. Please enable " -"cookies, reload this page, and try again." -msgstr "" -"Vyzerá, že tvoj prehliadač nemá povolené cookies. Prosím, povoľ cookies, " -"znovu načítaj túto stránku a skús činnosť znovu." - -#: contrib/admin/views/decorators.py:82 -msgid "Usernames cannot contain the '@' character." -msgstr "Meno užívateľa nemože obsahovať znak '@' ." - -#: contrib/admin/views/decorators.py:84 -#, python-format -msgid "Your e-mail address is not your username. Try '%s' instead." -msgstr "Tvoja e-mailova adresa nie je tvoje užívateľské meno. Skús '%s'." - -#: contrib/admin/views/main.py:226 -msgid "Site administration" -msgstr "Administrácia webu" - -#: 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 "Objekt %(name)s \"%(obj)s\" bol úspešne pridaný." -#: 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 "Môžeš urobiť zmeny zase nižšie." +msgstr "Môžete pokračovať v zmenách." -#: contrib/admin/views/main.py:272 contrib/admin/views/main.py:357 +#: contrib/admin/views/auth.py:30 +msgid "Add user" +msgstr "Pridať užívateľa" + +#: contrib/admin/views/auth.py:57 +msgid "Password changed successfully." +msgstr "Heslo bolo úspešne zmenené." + +#: contrib/admin/views/auth.py:64 +#, python-format +msgid "Change password: %s" +msgstr "Zmeniť heslo: %s" + +#: contrib/admin/views/main.py:223 +msgid "Site administration" +msgstr "Administrácia" + +#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356 #, python-format msgid "You may add another %s below." -msgstr "Môžeš pridať ďalší %s nižšie." +msgstr "Môžete pokračovať v pridávaní ďaľších %s." -#: contrib/admin/views/main.py:290 +#: contrib/admin/views/main.py:289 #, python-format msgid "Add %s" msgstr "Pridaj %s" -#: contrib/admin/views/main.py:336 +#: contrib/admin/views/main.py:335 #, python-format msgid "Added %s." msgstr "Bol pridaný %s." -#: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338 -#: contrib/admin/views/main.py:340 -msgid "and" -msgstr "a" - -#: contrib/admin/views/main.py:338 +#: contrib/admin/views/main.py:337 #, python-format msgid "Changed %s." msgstr "Bol zmenený %s" -#: contrib/admin/views/main.py:340 +#: contrib/admin/views/main.py:339 #, python-format msgid "Deleted %s." msgstr "Bol vymazaný %s." -#: contrib/admin/views/main.py:343 +#: contrib/admin/views/main.py:342 msgid "No fields changed." msgstr "Polia neboli zmenené." -#: contrib/admin/views/main.py:346 +#: contrib/admin/views/main.py:345 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." msgstr "Objekt %(name)s \"%(obj)s\" boli úspešne zmenený." -#: 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." @@ -774,120 +1209,221 @@ msgstr "" "Objekt %(name)s \"%(obj)s\" bol úspešne zmenený. Ďalšie zmeny môžeš urobiť " "zase nižšie." -#: contrib/admin/views/main.py:392 +#: contrib/admin/views/main.py:391 #, python-format msgid "Change %s" -msgstr "Zmeň %s" +msgstr "Zmeniť %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 "Jeden alebo viac %(fieldname)s v %(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 "Jeden alebo viac %(fieldname)s v %(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 "Objekt %(name)s \"%(obj)s\" bol úspešne vymazaný." -#: contrib/admin/views/main.py:511 +#: contrib/admin/views/main.py:517 msgid "Are you sure?" -msgstr "Si si istý?" +msgstr "Ste si istý?" -#: contrib/admin/views/main.py:533 +#: contrib/admin/views/main.py:539 #, python-format msgid "Change history: %s" -msgstr "Zmeň históriu: %s" +msgstr "Zmeniť históriu: %s" -#: contrib/admin/views/main.py:565 +#: contrib/admin/views/main.py:573 #, python-format msgid "Select %s" msgstr "Výber %s" -#: contrib/admin/views/main.py:565 +#: contrib/admin/views/main.py:573 #, python-format msgid "Select %s to change" msgstr "Ktorý %s sa má zmeniť?" -#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:289 -#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:297 -#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:300 +#: contrib/admin/views/main.py:768 +msgid "Database error" +msgstr "Chyba databázy" + +#: 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 "" +"Prosím, zadajte užívateľské meno a heslo. Pozor na malé a veľké písmená." + +#: contrib/admin/views/decorators.py:24 +#: contrib/admin/templates/admin/login.html:25 +msgid "Log in" +msgstr "Prihlásenie" + +#: 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 "Vaša session vypršala. Prosím, príhlaste sa znovu. Nemusíte sa obávať, vaše údaje boli uchované." + +#: 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 "Vyzerá to tak, že váš prehliadač nemá povolené cookies. Prosím, povoľte si cookies a skúste znova načítať stránku." + +#: contrib/admin/views/decorators.py:83 +msgid "Usernames cannot contain the '@' character." +msgstr "Užívateľské meno nemože obsahovať znak '@'." + +#: contrib/admin/views/decorators.py:85 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "Vaša e-mailová adresa nie je užívateľským menom. Skúste použiť meno '%s'." + +#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48 +#: contrib/admin/views/doc.py:50 +msgid "tag:" +msgstr "" + +#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79 +#: contrib/admin/views/doc.py:81 +msgid "filter:" +msgstr "" + +#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137 +#: contrib/admin/views/doc.py:139 +msgid "view:" +msgstr "" + +#: contrib/admin/views/doc.py:164 +#, python-format +msgid "App %r not found" +msgstr "Aplikáciu %r sa nepodarilo nájsť." + +#: contrib/admin/views/doc.py:171 +#, python-format +msgid "Model %(name)r not found in app %(label)r" +msgstr "Model %(name)r sa nenachádza v aplikácii %(label)r" + +#: contrib/admin/views/doc.py:183 +#, python-format +msgid "the related `%(label)s.%(type)s` object" +msgstr "Prepojenie na objekt `%(label)s.%(type)s`" + +#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205 +#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224 +msgid "model:" +msgstr "" + +#: contrib/admin/views/doc.py:214 +#, python-format +msgid "related `%(label)s.%(name)s` objects" +msgstr "súvisiace objekty `%(label)s.%(name)s`" + +#: contrib/admin/views/doc.py:219 +#, python-format +msgid "all %s" +msgstr "všetky %s" + +#: contrib/admin/views/doc.py:224 +#, python-format +msgid "number of %s" +msgstr "počet %s" + +#: contrib/admin/views/doc.py:229 +#, python-format +msgid "Fields on %s objects" +msgstr "Polia objektu %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 "Celočíselná hodnota" +msgstr "Celé číslo" -#: contrib/admin/views/doc.py:280 +#: contrib/admin/views/doc.py:292 msgid "Boolean (Either True or False)" -msgstr "Logická hodnota (buď True alebo False)" +msgstr "Logická hodnota (True alebo False)" -#: contrib/admin/views/doc.py:281 contrib/admin/views/doc.py:299 +#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311 #, python-format msgid "String (up to %(maxlength)s)" -msgstr "Dĺžka reťazca (maximálne do %(maxlength)s)" +msgstr "Dĺžka reťazca (maximálne do %(maxlength)s znakov)" -#: contrib/admin/views/doc.py:282 +#: contrib/admin/views/doc.py:294 msgid "Comma-separated integers" -msgstr "Čiarka oddeľuje celé čísla" +msgstr "Celé čísla oddelené čiarkou" -#: contrib/admin/views/doc.py:283 +#: contrib/admin/views/doc.py:295 msgid "Date (without time)" msgstr "Dátum (bez času)" -#: contrib/admin/views/doc.py:284 +#: contrib/admin/views/doc.py:296 msgid "Date (with time)" -msgstr "Dátum ( a čas)" +msgstr "Dátum (a čas)" -#: contrib/admin/views/doc.py:285 +#: contrib/admin/views/doc.py:297 msgid "E-mail address" msgstr "E-mailová adresa" -#: contrib/admin/views/doc.py:286 contrib/admin/views/doc.py:287 -#: contrib/admin/views/doc.py:290 +#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299 +#: contrib/admin/views/doc.py:302 msgid "File path" msgstr "Cesta k súboru" -#: contrib/admin/views/doc.py:288 +#: contrib/admin/views/doc.py:300 msgid "Decimal number" -msgstr "Desiatkové číslo" +msgstr "Desatinné číslo" -#: contrib/admin/views/doc.py:294 +#: contrib/admin/views/doc.py:306 msgid "Boolean (Either True, False or None)" -msgstr "Logická hodnota (buď True, False alebo None)" +msgstr "Logická hodnota (True, False alebo None)" -#: contrib/admin/views/doc.py:295 +#: contrib/admin/views/doc.py:307 msgid "Relation to parent model" -msgstr "Má vzťah na rodičovský model" +msgstr "Má vzťah k nadradenému modelu" -#: contrib/admin/views/doc.py:296 +#: contrib/admin/views/doc.py:308 msgid "Phone number" msgstr "Číslo telefónu" -#: contrib/admin/views/doc.py:301 +#: contrib/admin/views/doc.py:313 msgid "Text" msgstr "Text" -#: contrib/admin/views/doc.py:302 +#: contrib/admin/views/doc.py:314 msgid "Time" msgstr "Čas" -#: contrib/admin/views/doc.py:304 -msgid "U.S. state (two uppercase letters)" -msgstr "U.S. štát (dve veľké písmena)" +#: contrib/admin/views/doc.py:315 contrib/flatpages/models.py:7 +msgid "URL" +msgstr "URL" -#: contrib/admin/views/doc.py:305 +#: contrib/admin/views/doc.py:316 +msgid "U.S. state (two uppercase letters)" +msgstr "Štát USA (dve veľké písmena)" + +#: contrib/admin/views/doc.py:317 msgid "XML text" msgstr "XML text" +#: contrib/admin/views/doc.py:343 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "%s nie je urlpattern objekt" + #: contrib/admin/templates/widget/file.html:2 msgid "Currently:" -msgstr "Aktuálny:" +msgstr "Aktuálne:" #: contrib/admin/templates/widget/file.html:3 msgid "Change:" -msgstr "Zmeň:" +msgstr "Zmeniť:" #: contrib/admin/templates/widget/date_time.html:3 msgid "Date:" @@ -897,43 +1433,49 @@ msgstr "Dátum:" msgid "Time:" msgstr "Čas:" -#: contrib/admin/templates/admin/object_history.html:3 #: 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/base.html:23 #: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 #: contrib/admin/templates/admin_doc/bookmarklets.html:3 msgid "Documentation" msgstr "Dokumentácia" -#: contrib/admin/templates/admin/object_history.html:3 #: 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/base.html:23 #: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:46 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 #: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 #: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 #: contrib/admin/templates/admin_doc/missing_docutils.html:4 #: contrib/admin/templates/admin_doc/view_index.html:5 #: contrib/admin/templates/admin_doc/model_detail.html:3 #: contrib/admin/templates/admin_doc/index.html:4 #: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 msgid "Change password" -msgstr "Zmeň heslo" +msgstr "Zmeniť heslo" -#: contrib/admin/templates/admin/object_history.html:5 #: contrib/admin/templates/admin/change_list.html:6 +#: contrib/admin/templates/admin/object_history.html:5 #: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/invalid_setup.html:4 #: contrib/admin/templates/admin/change_form.html:13 -#: contrib/admin/templates/admin/base.html:28 #: 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 @@ -943,14 +1485,24 @@ msgstr "Zmeň heslo" msgid "Home" msgstr "Začiatok" +#: contrib/admin/templates/admin/change_list.html:12 +#, python-format +msgid "Add %(name)s" +msgstr "Pridať %(name)s" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr "Podľa %(filter_title)s " + #: 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 "História" #: contrib/admin/templates/admin/object_history.html:18 msgid "Date/time" -msgstr "Dátum/čas" +msgstr "Dátum a čas" #: contrib/admin/templates/admin/object_history.html:19 msgid "User" @@ -962,25 +1514,40 @@ msgstr "Udalosť" #: contrib/admin/templates/admin/object_history.html:26 msgid "DATE_WITH_TIME_FULL" -msgstr "PLNY_DATUM_AJ_CAS" +msgstr "DATE_WITH_TIME_FULL" #: contrib/admin/templates/admin/object_history.html:36 msgid "" "This object doesn't have a change history. It probably wasn't added via this " "admin site." msgstr "" -"Tento object nemá históriu zmien. Možno nebol pridaný prostredníctvom tohoto " -"web admina" +"Tento object nemá históriu vykonaných zmien. Možno nebol pridaný prostredníctvom tohoto administračného rozhrania." -#: contrib/admin/templates/admin/change_list.html:11 -#, python-format -msgid "Add %(name)s" -msgstr "Pridaj %(name)s" +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Go" +msgstr "Choď" -#: contrib/admin/templates/admin/filter.html:2 +#: contrib/admin/templates/admin/search_form.html:10 #, python-format -msgid " By %(title)s " -msgstr " Od %(title)s " +msgid "1 result" +msgstr "1 výsledok" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "%(full_result_count)s spolu" + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "Zobraziť všetky" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "Django administrácia" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "Administrácia Django" #: contrib/admin/templates/admin/500.html:4 msgid "Server error" @@ -998,39 +1565,37 @@ msgstr "Chyba servera (500)" 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 "" -"Vznikla chyba. Prostredníctvom e-mailu bol o nej informovaný správca a táto " -"by mala byť o chviľu odstránená. Ďakujeme za tvoju trpezlivosť." +msgstr "Vznikla neočakávaná chyba. Prostredníctvom e-mailu bol o nej informovaný správca a dá sa predpokladať, že bude v krátkej dobe odstránená. Ďakujeme za pochopenie." -#: contrib/admin/templates/admin/search_form.html:8 -msgid "Go" -msgstr "Choď" - -#: contrib/admin/templates/admin/base_site.html:4 -msgid "Django site admin" -msgstr "Django web admin" - -#: contrib/admin/templates/admin/base_site.html:7 -msgid "Django administration" -msgstr "Administrácia Django" +#: 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 "S inštaláciou alebo nastavením vašej databázy nie je niečo v poriadku. Uistite sa, že ste vytvorili potrebné databázové tabuľky. Taktiež skontrolujte, či má systémový užívateľ, pod ktorým beží aplikácia, právo na prístup k databáze a čítanie súborov databázy." #: contrib/admin/templates/admin/index.html:17 #, python-format msgid "Models available in the %(name)s application." -msgstr "Model je prístupný v %(name)s aplikácií." +msgstr "Modely dostupné v aplikácii %(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 "Pridaj" +msgstr "Pridať" #: contrib/admin/templates/admin/index.html:34 msgid "Change" -msgstr "Zmeň" +msgstr "Zmeniť" #: contrib/admin/templates/admin/index.html:44 msgid "You don't have permission to edit anything." -msgstr "Nemáš povolenie na zmeny ." +msgstr "Nemáte právo na vykonávanie zmien." #: contrib/admin/templates/admin/index.html:52 msgid "Recent Actions" @@ -1042,7 +1607,7 @@ msgstr "Moje udalosti" #: contrib/admin/templates/admin/index.html:57 msgid "None available" -msgstr "Nepovolené" +msgstr "Nedostupné" #: contrib/admin/templates/admin/404.html:4 #: contrib/admin/templates/admin/404.html:8 @@ -1053,32 +1618,27 @@ msgstr "Stránka nebola nájdená" msgid "We're sorry, but the requested page could not be found." msgstr "Ľutujeme, ale požadovaná stránka nebola nájdená." -#: contrib/admin/templates/admin/login.html:22 -msgid "Have you forgotten your password?" -msgstr "Zabudol si svoje heslo?" +#: contrib/admin/templates/admin/filters.html:4 +msgid "Filter" +msgstr "Filter" -#: contrib/admin/templates/admin/change_form.html:21 +#: contrib/admin/templates/admin/change_form.html:22 msgid "View on site" -msgstr "Pozri na webe" +msgstr "Pozrieť na stránke" -#: 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] "Oprav chybu, čo je nižšie, prosím." -msgstr[1] "Oprav chyby, čo sú nižšie, prosím." +msgstr "Prosím, opravte chyby uvedené nižšie." -#: contrib/admin/templates/admin/change_form.html:48 +#: contrib/admin/templates/admin/change_form.html:50 msgid "Ordering" -msgstr "Určenie" +msgstr "Radenie" -#: contrib/admin/templates/admin/change_form.html:51 +#: contrib/admin/templates/admin/change_form.html:53 msgid "Order:" msgstr "Poradie:" -#: contrib/admin/templates/admin/base.html:23 -msgid "Welcome," -msgstr "Vítajte," - #: contrib/admin/templates/admin/delete_confirmation.html:9 #: contrib/admin/templates/admin/submit_line.html:3 msgid "Delete" @@ -1087,49 +1647,79 @@ msgstr "Vymazať" #: 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 "" -"Vymazaním objektu %(object_name)s '%(object)s' môžeš spôsobiť vymazanie " -"súvisiacich objektov, ale tvoj účet nemá povolenie na mazanie nasledujúcich " -"typov objektov:" +"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 "Zmazanie objektu %(object_name)s '%(escaped_object)s' by spôsobilo zmazanie súvisiacich objektov, avšak vaše užívateľské práva vám neumožňujú zmazať nasledujúce typy objektov:" #: contrib/admin/templates/admin/delete_confirmation.html:21 #, python-format msgid "" -"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of " -"the following related items will be deleted:" -msgstr "" -"Si si istý, že chceš vymazať %(object_name)s \"%(object)s\"? Všetky " -"nasledujúce objekty budú tiež vymazané :" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" +msgstr "Ste si istý, že chcete zmazať objekt %(object_name)s \"%(escaped_object)s\"? " +"Zmazané budú aj všetky tieto súvisiace objekty:" #: contrib/admin/templates/admin/delete_confirmation.html:26 msgid "Yes, I'm sure" -msgstr "Ano, som si istý" +msgstr "Áno, som si istý" + +#: contrib/admin/templates/admin/base.html:25 +msgid "Welcome," +msgstr "Vitajte," #: contrib/admin/templates/admin/submit_line.html:4 msgid "Save as new" -msgstr "Zapísať ako nový" +msgstr "Uložiť ako nový" #: contrib/admin/templates/admin/submit_line.html:5 msgid "Save and add another" -msgstr "Zapísať a pridať ďaší" +msgstr "Uložiť a pridať ďaľší" #: contrib/admin/templates/admin/submit_line.html:6 msgid "Save and continue editing" -msgstr "Zapísať a pokračovať v zmenách" +msgstr "Uložiť a pokračovať v zmenách" #: contrib/admin/templates/admin/submit_line.html:7 msgid "Save" -msgstr "Zápis" +msgstr "Uložiť" + +#: contrib/admin/templates/admin/auth/user/change_password.html:28 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "Zadajte nové heslo pre užívateľa %(username)s." + +#: contrib/admin/templates/admin/auth/user/change_password.html:34 +#: contrib/admin/templates/admin/auth/user/add_form.html:18 +msgid "Password" +msgstr "Heslo" + +#: contrib/admin/templates/admin/auth/user/change_password.html:39 +#: contrib/admin/templates/admin/auth/user/add_form.html:23 +msgid "Password (again)" +msgstr "Heslo (potvrdiť)" + +#: 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 "Znova zadajte heslo kvôli overeniu." + +#: 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 "Najskôr zadajte užívateľské meno a heslo. Neskôr budete môcť upraviť ostatné užívateľské nastavnia." + +#: contrib/admin/templates/admin/auth/user/add_form.html:12 +msgid "Username" +msgstr "Užívateľské meno" #: 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 "Zmeň heslo" +msgstr "Zmena heslo" #: contrib/admin/templates/registration/password_change_done.html:6 #: contrib/admin/templates/registration/password_change_done.html:10 @@ -1138,22 +1728,20 @@ msgstr "Heslo bolo úspešne zmenené" #: contrib/admin/templates/registration/password_change_done.html:12 msgid "Your password was changed." -msgstr "Tvoje heslo bolo zmenené." +msgstr "Vaše heslo bolo zmenené." #: 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 "Generácia nového hesla" +msgstr "Obnovenie hesla" #: contrib/admin/templates/registration/password_reset_form.html:12 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll reset " "your password and e-mail the new one to you." -msgstr "" -"Zabudol si svoje heslo? Vlož nižšie tvoju e-mail adresu, a nové heslo ti " -"bude na ňu zaslané ." +msgstr "Zabudli ste svoje heslo? Zadajte svoju e-mailovú adresu, na ktorú vám bude zaslané nové heslo." #: contrib/admin/templates/registration/password_reset_form.html:16 msgid "E-mail address:" @@ -1165,32 +1753,28 @@ msgstr "Obnova môjho hesla" #: contrib/admin/templates/registration/logged_out.html:8 msgid "Thanks for spending some quality time with the Web site today." -msgstr "Ďakujeme ti, za stráveny čas na našej stránke." +msgstr "Ďakujeme vám, za čas strávený na našich stránkach." #: contrib/admin/templates/registration/logged_out.html:10 msgid "Log in again" -msgstr "Prihlás sa znovu" +msgstr "Prihlásiť sa znovu" #: contrib/admin/templates/registration/password_reset_done.html:6 #: contrib/admin/templates/registration/password_reset_done.html:10 msgid "Password reset successful" -msgstr "Heslo bolo úspešne vygenerované" +msgstr "Heslo bolo úspešne obnovené" #: contrib/admin/templates/registration/password_reset_done.html:12 msgid "" "We've e-mailed a new password to the e-mail address you submitted. You " "should be receiving it shortly." -msgstr "" -"Poslali sme ti, nové heslo na tebou uvedenú emailovú adresu. Mal by si ho " -"dostať čo najskôr." +msgstr "Bolo vám zaslané nové heslo na uvedenú adresu. Mali by ste ho obdržať v najbližšej dobe." #: 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 "" -"Kvôli bezpečnosti vlož prosím tvoje staré heslo, a potom dvakrát tvoje nové " -"heslo, tým môžeme skontrolovať jeho správnosť." +msgstr "Z bezpečnostných dôvodov zadajte najskôr staré heslo a potom dva krát nové heslo, tak aby sa mohlo overiť, či nevznikol preklep." #: contrib/admin/templates/registration/password_change_form.html:17 msgid "Old password:" @@ -1210,34 +1794,34 @@ msgstr "Zmeň svoje heslo" #: contrib/admin/templates/registration/password_reset_email.html:2 msgid "You're receiving this e-mail because you requested a password reset" -msgstr "Dostal si túto správu preto, lebo si požadoval vygenerovať tvoje heslo" +msgstr "Dostali ste túto správu, lebo ste si vyžiadali obnovu hesla." #: contrib/admin/templates/registration/password_reset_email.html:3 #, python-format msgid "for your user account at %(site_name)s" -msgstr "pre tvoj užívateľský účet na %(site_name)s" +msgstr "pre váš užívateľský účet na %(site_name)s" #: contrib/admin/templates/registration/password_reset_email.html:5 #, python-format msgid "Your new password is: %(new_password)s" -msgstr "Tvoje nové heslo je: %(new_password)s" +msgstr "Vaše nové heslo je: %(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 "Môžeš zmeniť toto heslo na nasledujúcej stránke:" +msgstr "Heslo si kľudne môžete zmeniť na tejto stránke:" #: contrib/admin/templates/registration/password_reset_email.html:11 msgid "Your username, in case you've forgotten:" -msgstr "Tvoje užívateľské meno, ak si ho zabudol:" +msgstr "Vaše užívateľské meno, pre prípad, že ste zabudli:" #: contrib/admin/templates/registration/password_reset_email.html:13 msgid "Thanks for using our site!" -msgstr "Ďakujeme, že používaš naše stránky!" +msgstr "Ďakujeme vám, že využívate služby našej stránky!" #: contrib/admin/templates/registration/password_reset_email.html:15 #, python-format msgid "The %(site_name)s team" -msgstr "Skupina %(site_name)s" +msgstr "Tím %(site_name)s" #: contrib/admin/templates/admin_doc/bookmarklets.html:3 msgid "Bookmarklets" @@ -1256,70 +1840,509 @@ msgid "" "bookmarklets require you to be viewing the site from a computer designated\n" "as \"internal\" (talk to your system administrator if you aren't sure if\n" "your computer is \"internal\").

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

                              Na inštaláciu záložiek, potiahni linku do tvojho " -"bookmarks\n" -"toolbar, alebo klikni pravou myšou na linku a pridaj ju do tvojho " -"bookmarks.\n" -"Teraz si môžeš vybrať záložku pre ľubovoľnú stránku na webe. Poznámka:\n" -"niektoré záložky vyžadujú aby si prezeral web z počítača označeného \n" -"ako \"internal\" (opýtaj sa vášho systémového administrátora ak si si nie " -"istý/á, \n" -"že tvoj počítač je označený ako \"internal\").

                              \n" +msgstr "\n" +"

                              Ak chete nainštalovať záložky, pretiahnite linku do vášho panela so záložkami\n" +"alebo kliknite pravým tlačidlom myši na linku a pridajte ju do svojich záložiek.\n" +"Následne môžete záložky použiť na stránkach. Všimnite si, že použitie niektorých záložiek vyžaduje, aby bol váš počítač pridaný do zoznamu INTERNAL_IPS. Ak nie ste si istý, že ste v tomto zozname, oslovte vášho administrátora.

                              \n" #: contrib/admin/templates/admin_doc/bookmarklets.html:19 msgid "Documentation for this page" -msgstr "Dokumnentácia tejto stránky" +msgstr "Dokumentácia k tejto stránke" #: 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 "" -"Skoč z ľubovoľnej stránky do dokumentácie, kde je popísaná generácia tejto " -"stránky." +"Skočte z ľubovoľnej stránky do dokumentácie, kde je popísané, ako sa táto stránka generuje." #: contrib/admin/templates/admin_doc/bookmarklets.html:22 msgid "Show object ID" -msgstr "Ukáž objekt ID" +msgstr "Zobraziť ID objektu." #: contrib/admin/templates/admin_doc/bookmarklets.html:23 msgid "" "Shows the content-type and unique ID for pages that represent a single " "object." -msgstr "" -"Ukáž typ obsahu a jednoznačné ID pre stránky, ktoré zatupujú jednoduché " -"objekty." +msgstr "Zobrazuje content-type a ID stránok, ktoré reprezentujú jediný objekt." #: contrib/admin/templates/admin_doc/bookmarklets.html:25 msgid "Edit this object (current window)" -msgstr "Edituj tento object (aktuálne okno)" +msgstr "Editácia tohoto objektu (v aktuálnom okne)" #: contrib/admin/templates/admin_doc/bookmarklets.html:26 msgid "Jumps to the admin page for pages that represent a single object." -msgstr "Skoč na stránku admina, ktorá zastupuje jednoduchý objekt" +msgstr "Skočiť na stránku admina, ktorá reprezentuje tento jeden objekt." #: contrib/admin/templates/admin_doc/bookmarklets.html:28 msgid "Edit this object (new window)" -msgstr "Edituj tento objekt (nové okno)" +msgstr "Editácia tohoto objektu (v novom okne)" #: contrib/admin/templates/admin_doc/bookmarklets.html:29 msgid "As above, but opens the admin page in a new window." -msgstr "Ako vyššie, ale stranka admina sa otvorí v novom okne." +msgstr "To isté ako predtým, akurát otvorí administračnú stránku v novom okne." -#: utils/translation.py:363 -msgid "DATE_FORMAT" +#: contrib/contenttypes/models.py:36 +msgid "python model class name" +msgstr "pythonové meno triedy modelu" + +#: contrib/contenttypes/models.py:39 +msgid "content type" +msgstr "typ obsahu" + +#: contrib/contenttypes/models.py:40 +msgid "content types" +msgstr "typy obsahu" + +#: contrib/auth/views.py:39 +msgid "Logged out" +msgstr "Odhlásený" + +#: contrib/auth/models.py:38 contrib/auth/models.py:57 +msgid "name" +msgstr "meno" + +#: contrib/auth/models.py:40 +msgid "codename" +msgstr "codename" + +#: contrib/auth/models.py:42 +msgid "permission" +msgstr "povolenie" + +#: contrib/auth/models.py:43 contrib/auth/models.py:58 +msgid "permissions" +msgstr "práva" + +#: contrib/auth/models.py:60 +msgid "group" +msgstr "skupina" + +#: contrib/auth/models.py:61 contrib/auth/models.py:100 +msgid "groups" +msgstr "skupiny" + +#: contrib/auth/models.py:90 +msgid "username" +msgstr "užívateľské meno" + +#: contrib/auth/models.py:90 +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "Povinná položka s dĺžkou 30 znakov alebo menej. Povolené sú len alfanumerické znaky (písmená, čísla a podtržník)." + +#: contrib/auth/models.py:91 +msgid "first name" +msgstr "krstné meno" + +#: contrib/auth/models.py:92 +msgid "last name" +msgstr "priezvisko" + +#: contrib/auth/models.py:93 +msgid "e-mail address" +msgstr "e-mailová adresa" + +#: contrib/auth/models.py:94 +msgid "password" +msgstr "heslo" + +#: contrib/auth/models.py:94 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "Použite '[algo]$[salt]$[hexdigest]' alebo formulár na zmenu hesla." + +#: contrib/auth/models.py:95 +msgid "staff status" +msgstr "zamestnanec" + +#: contrib/auth/models.py:95 +msgid "Designates whether the user can log into this admin site." +msgstr "Určuje, či má užívateľ oprávnenie prihlásiť sa do administračnej časti." + +#: contrib/auth/models.py:96 +msgid "active" +msgstr "aktívny" + +#: contrib/auth/models.py:96 +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "Určuje, či je účet aktívny. Odškrtnite, ak chcete deaktivovať užívateľský účet." + +#: contrib/auth/models.py:97 +msgid "superuser status" +msgstr "superužívateľ" + +#: contrib/auth/models.py:97 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "Určuje, či užívateľ získava automaticky všetky práva aj bez priameho priradenia." + +#: contrib/auth/models.py:98 +msgid "last login" +msgstr "naposledy prihlásený" + +#: contrib/auth/models.py:99 +msgid "date joined" +msgstr "dátum registrácie" + +#: 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 "Okrem ručne zadaných práv bude mať užívateľ aj všetky práva prislúchajúce skupinám, v ktorých sa nachádza." + +#: contrib/auth/models.py:102 +msgid "user permissions" +msgstr "užívateľské práva" + +#: contrib/auth/models.py:105 +msgid "user" +msgstr "uživateľ" + +#: contrib/auth/models.py:106 +msgid "users" +msgstr "užívatelia" + +#: contrib/auth/models.py:111 +msgid "Personal info" +msgstr "Osobné údaje" + +#: contrib/auth/models.py:112 +msgid "Permissions" +msgstr "Práva" + +#: contrib/auth/models.py:113 +msgid "Important dates" +msgstr "Dôležité dátumy" + +#: contrib/auth/models.py:114 +msgid "Groups" +msgstr "Skupiny" + +#: contrib/auth/models.py:258 +msgid "message" +msgstr "správa" + +#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 +msgid "The two password fields didn't match." +msgstr "Pole hesla a jeho potvrdenie sa nezhodujú." + +#: contrib/auth/forms.py:25 +msgid "A user with that username already exists." +msgstr "Užívateľ s týmto užívateľským menom už existuje." + +#: contrib/auth/forms.py:53 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "Váš prehliadač nemá povolené cookies. Cookies sú potrebné pre úspešné prihlásenie." + +#: contrib/auth/forms.py:62 +msgid "This account is inactive." +msgstr "Účet je deaktivovaný." + +#: contrib/auth/forms.py:85 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "K danej e-mailovej adrese neexistuje užívateľský účet. Ste si istý, že ste sa zaregistrovali?" + +#: contrib/auth/forms.py:117 +msgid "The two 'new password' fields didn't match." +msgstr "Pole nového hesla a jeho potvrdenie sa nezhodujú." + +#: contrib/auth/forms.py:124 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "Vaše staré heslo nebolo zadané správne. Prosím, zadajte heslo znova." + +#: contrib/localflavor/uk/forms.py:18 +msgid "Enter a postcode. A space is required between the two postcode parts." +msgstr "Zadajte britský poštový kód (PSČ). Medzera medzi dvomi časťami kódu je povinná." + +#: contrib/localflavor/fr/forms.py:17 contrib/localflavor/it/forms.py:15 +#: contrib/localflavor/fi/forms.py:14 +msgid "Enter a zip code in the format XXXXX." +msgstr "Vložte poštové smerovacie číslo v tvare XXXXX." + +#: contrib/localflavor/usa/forms.py:17 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "Zadajte americký poštový kód (ZIP) vo formáte XXXXX alebo XXXXX-XXXX." + +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" msgstr "" -#: utils/translation.py:364 -msgid "DATETIME_FORMAT" +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" msgstr "" -#: utils/translation.py:365 -msgid "TIME_FORMAT" +#: contrib/localflavor/jp/jp_prefectures.py:6 +msgid "Iwate" msgstr "" +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:16 +msgid "Tokyo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +msgid "Shimane" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +msgid "Kagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +msgid "Ehime" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" +msgstr "" + +#: contrib/localflavor/jp/forms.py:21 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "Zadajte poštové smerovacie číslo v tvare XXXXXXX alebo XXX-XXXX." + +#: contrib/localflavor/no/forms.py:15 +msgid "Enter a zip code in the format XXXX." +msgstr "Vložte poštové smerovacie číslo v tvare XXXX." + +#: contrib/localflavor/no/forms.py:36 +msgid "Enter a valid Norwegian social security number." +msgstr "Vložte platné nórske číslo sociálneho poistenia (social security number)." + +#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:46 +msgid "Enter a valid Finnish social security number." +msgstr "Vložte platné fínske číslo sociálneho poistenia (social security number)." + +#: contrib/sessions/models.py:68 +msgid "session key" +msgstr "kľúč session" + +#: contrib/sessions/models.py:69 +msgid "session data" +msgstr "údaje session" + +#: contrib/sessions/models.py:70 +msgid "expire date" +msgstr "dátum vypršania platnosti" + +#: contrib/sessions/models.py:74 +msgid "session" +msgstr "session" + +#: contrib/sessions/models.py:75 +msgid "sessions" +msgstr "sessions" + +#: contrib/flatpages/models.py:8 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" +"Príklad: '/about/contact/'. Uistite sa, že adresa obsahuje na začiatku a na konci.lomítka." + +#: contrib/flatpages/models.py:9 +msgid "title" +msgstr "názov" + +#: contrib/flatpages/models.py:10 +msgid "content" +msgstr "obsah" + +#: contrib/flatpages/models.py:11 +msgid "enable comments" +msgstr "povoliť komentáre" + +#: contrib/flatpages/models.py:12 +msgid "template name" +msgstr "názov šablóny" + +#: contrib/flatpages/models.py:13 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" +"Príklad: 'flatpages/contact_page'. Ak táto šablóna neexistuje, systém použije " +"'flatpages/default'." + +#: contrib/flatpages/models.py:14 +msgid "registration required" +msgstr "je vyžadovaná registrácia" + +#: contrib/flatpages/models.py:14 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "Ak je zaškrtnuté, tak sa stránka zobrazí len prihlásenému užívateľovi." + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "statická stránka" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "statické stránky" + #: utils/dates.py:6 msgid "Monday" msgstr "Pondelok" @@ -1398,19 +2421,19 @@ msgstr "December" #: utils/dates.py:19 msgid "jan" -msgstr "" +msgstr "jan" #: utils/dates.py:19 msgid "feb" -msgstr "" +msgstr "feb" #: utils/dates.py:19 msgid "mar" -msgstr "" +msgstr "mar" #: utils/dates.py:19 msgid "apr" -msgstr "" +msgstr "apr" #: utils/dates.py:19 msgid "may" @@ -1426,11 +2449,11 @@ msgstr "júl" #: utils/dates.py:20 msgid "aug" -msgstr "" +msgstr "aug" #: utils/dates.py:20 msgid "sep" -msgstr "" +msgstr "sep" #: utils/dates.py:20 msgid "oct" @@ -1438,11 +2461,11 @@ msgstr "okt" #: utils/dates.py:20 msgid "nov" -msgstr "" +msgstr "nov" #: utils/dates.py:20 msgid "dec" -msgstr "" +msgstr "dec" #: utils/dates.py:27 msgid "Jan." @@ -1474,529 +2497,73 @@ msgstr "Dec." #: utils/timesince.py:12 msgid "year" -msgid_plural "years" -msgstr[0] "rok" -msgstr[1] "rokov" +msgstr "rok" #: utils/timesince.py:13 msgid "month" -msgid_plural "months" -msgstr[0] "mesiac" -msgstr[1] "mesiacov" +msgstr "mesiac" #: utils/timesince.py:14 msgid "week" -msgid_plural "weeks" -msgstr[0] "" -msgstr[1] "" +msgstr "týždeň" #: utils/timesince.py:15 msgid "day" -msgid_plural "days" -msgstr[0] "ďeň" -msgstr[1] "dní" +msgstr "deň" #: utils/timesince.py:16 msgid "hour" -msgid_plural "hours" -msgstr[0] "hodina" -msgstr[1] "hodín" +msgstr "hodina" #: utils/timesince.py:17 msgid "minute" -msgid_plural "minutes" -msgstr[0] "minúta" -msgstr[1] "minút" +msgstr "minúta" -#: conf/global_settings.py:37 -msgid "Bengali" -msgstr "Bengálsky" +#: utils/dateformat.py:40 +msgid "p.m." +msgstr "p.m." -#: conf/global_settings.py:38 -msgid "Czech" -msgstr "Český" +#: utils/dateformat.py:41 +msgid "a.m." +msgstr "a.m." -#: conf/global_settings.py:39 -msgid "Welsh" -msgstr "Waleský" - -#: conf/global_settings.py:40 -msgid "Danish" -msgstr "Dánsky" - -#: conf/global_settings.py:41 -msgid "German" -msgstr "Nemecký" - -#: conf/global_settings.py:42 -msgid "Greek" -msgstr "Grécký" - -#: conf/global_settings.py:43 -msgid "English" -msgstr "Anglický" - -#: conf/global_settings.py:44 -msgid "Spanish" -msgstr "Španielsky" - -#: conf/global_settings.py:45 -msgid "Argentinean Spanish" -msgstr "Argentínska španielčina" - -#: conf/global_settings.py:46 -msgid "French" -msgstr "Francúzsky" - -#: conf/global_settings.py:47 -msgid "Galician" -msgstr "Galicijský" - -#: conf/global_settings.py:48 -msgid "Hungarian" -msgstr "Maďarský" - -#: conf/global_settings.py:49 -msgid "Hebrew" -msgstr "Hebrejský" - -#: conf/global_settings.py:50 -msgid "Icelandic" -msgstr "Islandský" - -#: conf/global_settings.py:51 -msgid "Italian" -msgstr "Taliansky" - -#: conf/global_settings.py:52 -msgid "Japanese" -msgstr "Japónsky" - -#: conf/global_settings.py:53 -msgid "Dutch" -msgstr "Holándsky" - -#: conf/global_settings.py:54 -msgid "Norwegian" -msgstr "Nórsky" - -#: conf/global_settings.py:55 -msgid "Brazilian" -msgstr "Brazílsky" - -#: conf/global_settings.py:56 -msgid "Romanian" -msgstr "Rumúnsky" - -#: conf/global_settings.py:57 -msgid "Russian" -msgstr "Ruský" - -#: conf/global_settings.py:58 -msgid "Slovak" -msgstr "Slovenský" - -#: conf/global_settings.py:59 -msgid "Slovenian" -msgstr "Slovinský" - -#: conf/global_settings.py:60 -msgid "Serbian" -msgstr "Srbský" - -#: conf/global_settings.py:61 -msgid "Swedish" -msgstr "Švédsky" - -#: conf/global_settings.py:62 -msgid "Ukrainian" -msgstr "Ukrajínsky" - -#: conf/global_settings.py:63 -msgid "Simplified Chinese" -msgstr "Zjednodušená činština " - -#: conf/global_settings.py:64 -msgid "Traditional Chinese" -msgstr "Tradičná čínština" - -#: db/models/manipulators.py:302 -#, python-format -msgid "%(object)s with this %(type)s already exists for the given %(field)s." -msgstr "%(object)s s %(type)s už existuje pre prvok %(field)s." - -#: db/models/fields/__init__.py:40 -#, python-format -msgid "%(optname)s with this %(fieldname)s already exists." -msgstr "%(optname)s s %(fieldname)s už existuje." - -#: 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 "Toto pole je nevyhnutné." - -#: db/models/fields/__init__.py:337 -msgid "This value must be an integer." -msgstr "Táto hodnota musí byť integer." - -#: db/models/fields/__init__.py:369 -msgid "This value must be either True or False." -msgstr "Táto hodnota musí byť buď True alebo False." - -#: db/models/fields/__init__.py:385 -msgid "This field cannot be null." -msgstr "Toto pole nemôže obsahovať null." - -#: db/models/fields/__init__.py:468 core/validators.py:132 -msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." -msgstr "Vlož platný dátum/čas vo formáte RRRR-MM-DD HH:MM" - -#: db/models/fields/__init__.py:562 -msgid "Enter a valid filename." -msgstr "Vlož platné meno súboru." - -#: db/models/fields/related.py:43 -#, python-format -msgid "Please enter a valid %s." -msgstr "Prosím vlož platné %s." - -#: db/models/fields/related.py:579 -msgid "Separate multiple IDs with commas." -msgstr "Oddeľ viacnásobné ID čiarkami." - -#: db/models/fields/related.py:581 -msgid "" -"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +#: utils/dateformat.py:46 +msgid "PM" msgstr "" -" Podržte \"Control\", alebo \"Command\" na Mac_u, na výber viac ako jednej " -"položky." -#: 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] "Prosím vlož platné %(self)s IDs. Hodnota %(value)r je neplatná." -msgstr[1] "Prosím vlož platné %(self)s IDs. Hodnoty %(value)r sú neplatné." - -#: 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] "Zabezpeč aby tvoj text bol menší ako %s znak." -msgstr[1] "Zabezpeč aby tvoj text bol menší ako %s znakov." - -#: forms/__init__.py:385 -msgid "Line breaks are not allowed here." -msgstr "Nový riadok tu nieje povolený." - -#: 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 "Vyber si platnú voľbu; '%(data)s' nie je v %(choices)s." - -#: forms/__init__.py:645 -msgid "The submitted file is empty." -msgstr "Poslaný súbor je prázdný." - -#: forms/__init__.py:699 -msgid "Enter a whole number between -32,768 and 32,767." -msgstr "Vlož celé číslo s hodnotou medzi -32768 a 32767." - -#: forms/__init__.py:708 -msgid "Enter a positive number." -msgstr "Vlož celé kladné číslo." - -#: forms/__init__.py:717 -msgid "Enter a whole number between 0 and 32,767." -msgstr "Vlož celé číslo s hodnotou medzi 0 a 32767." - -#: core/validators.py:60 -msgid "This value must contain only letters, numbers and underscores." -msgstr "Toto môže obsahovať len písmená, číslice a podčiarkovníky." - -#: core/validators.py:64 -msgid "" -"This value must contain only letters, numbers, underscores, dashes or " -"slashes." +#: utils/dateformat.py:47 +msgid "AM" msgstr "" -"Toto môže obsahovať len písmena, číslice, podčiarkovniky, pomlčky a lomítka." -#: core/validators.py:72 -msgid "Uppercase letters are not allowed here." -msgstr "Veľké písmená tu nie sú povolené." +#: utils/dateformat.py:95 +msgid "midnight" +msgstr "polnoc" -#: core/validators.py:76 -msgid "Lowercase letters are not allowed here." -msgstr "Malé písmena tu nie sú povolené." +#: utils/dateformat.py:97 +msgid "noon" +msgstr "poludnie" -#: core/validators.py:83 -msgid "Enter only digits separated by commas." -msgstr "Vlož len číslice, oddelené čiarkami." - -#: core/validators.py:95 -msgid "Enter valid e-mail addresses separated by commas." -msgstr "Vlož platné e-mail adresy oddelené čiarkami." - -#: core/validators.py:99 -msgid "Please enter a valid IP address." -msgstr "Prosím vlož platnú IP adresu." - -#: core/validators.py:103 -msgid "Empty values are not allowed here." -msgstr "Prázdne hodnoty tu nie sú povolené." - -#: core/validators.py:107 -msgid "Non-numeric characters aren't allowed here." -msgstr "Znaky, ktoré nie sú číslicami, tu nie sú povolené." - -#: core/validators.py:111 -msgid "This value can't be comprised solely of digits." -msgstr "Tento údaj nemôže byť vytvorený len z číslic." - -#: core/validators.py:116 -msgid "Enter a whole number." -msgstr "Vlož celé číslo." - -#: core/validators.py:120 -msgid "Only alphabetical characters are allowed here." -msgstr "Tu sú povolené len alfanumerické znaky." - -#: core/validators.py:124 -msgid "Enter a valid date in YYYY-MM-DD format." -msgstr "Vlož platný dátum vo formáte RRRR-MM-DD." - -#: core/validators.py:128 -msgid "Enter a valid time in HH:MM format." -msgstr "Vlož platný čas vo formáte HH:MM." - -#: core/validators.py:136 -msgid "Enter a valid e-mail address." -msgstr "Vlož platnú e-mail adresu." - -#: core/validators.py:148 -msgid "" -"Upload a valid image. The file you uploaded was either not an image or a " -"corrupted image." +#: utils/translation/trans_real.py:362 +msgid "DATE_FORMAT" msgstr "" -"Nahraj platný obrázok. Súbor, ktorý si nahral buď nebol obrázok alebo je " -"nahratý poškodený obrázok." -#: core/validators.py:155 -#, python-format -msgid "The URL %s does not point to a valid image." -msgstr "URL %s neukazuje na platný obrázok." - -#: core/validators.py:159 -#, python-format -msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +#: utils/translation/trans_real.py:363 +msgid "DATETIME_FORMAT" msgstr "" -"Telefónne číslo musí mať formát XXX-XXX-XXXX. Číslo \"%s\" je neplatné." -#: core/validators.py:167 -#, python-format -msgid "The URL %s does not point to a valid QuickTime video." -msgstr "URL %s neukazuje na platné QuickTime video." - -#: core/validators.py:171 -msgid "A valid URL is required." -msgstr "Platné URL je požadované." - -#: core/validators.py:185 -#, python-format -msgid "" -"Valid HTML is required. Specific errors are:\n" -"%s" +#: utils/translation/trans_real.py:364 +msgid "TIME_FORMAT" msgstr "" -"Je požadovaná bezchybná stránka HTML. Zistené chyby sú:\n" -"%s" -#: core/validators.py:192 -#, python-format -msgid "Badly formed XML: %s" -msgstr "Chybne formované XML: %s" - -#: core/validators.py:202 -#, python-format -msgid "Invalid URL: %s" -msgstr "Neplatné URL: %s" - -#: core/validators.py:206 core/validators.py:208 -#, python-format -msgid "The URL %s is a broken link." -msgstr "Odkaz na URL %s je neplatný." - -#: core/validators.py:214 -msgid "Enter a valid U.S. state abbreviation." -msgstr "Vlož platnú skratku U.S. štátu." - -#: 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] "Vyjadruj sa slušne! Slovo %s tu nie je dovolené použivať." -msgstr[1] "Vyjadruj sa slušne! Slová %s tu nie je dovolené použivať." - -#: core/validators.py:236 -#, python-format -msgid "This field must match the '%s' field." -msgstr "Toto pole sa musí zhodovať s poľom '%s'. " - -#: core/validators.py:255 -msgid "Please enter something for at least one field." -msgstr "Prosím vlož niečo aspoň pre jedno pole." - -#: core/validators.py:264 core/validators.py:275 -msgid "Please enter both fields or leave them both empty." -msgstr "Prosím vlož obidve polia, alebo nechaj ich obe prázdne. " - -#: core/validators.py:282 -#, python-format -msgid "This field must be given if %(field)s is %(value)s" -msgstr "Toto pole musí byť vyplnené tak, že %(field)s obsahuje %(value)s" - -#: core/validators.py:294 -#, python-format -msgid "This field must be given if %(field)s is not %(value)s" +#: utils/translation/trans_real.py:380 +msgid "YEAR_MONTH_FORMAT" msgstr "" -"Toto pole musí byť vyplnené tak, že %(field)s nesmie obsahovať %(value)s" -#: core/validators.py:313 -msgid "Duplicate values are not allowed." -msgstr "Duplicitné hodnoty nie sú povolené." - -#: core/validators.py:336 -#, python-format -msgid "This value must be a power of %s." -msgstr "Táto hodnota musí byť mocninou %s." - -#: core/validators.py:347 -msgid "Please enter a valid decimal number." -msgstr "Prosím vlož platné desiatkové číslo. " - -#: 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] "Prosím vlož platné desiatkové číslo s najviac %s číslicou." -msgstr[1] "Prosím vlož platné desiatkové číslo s najviac %s číslicami." - -#: 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] "Prosím vlož platné desatinné číslo s najviac %s desatinným miestom." -msgstr[1] "" -"Prosím vlož platné desatinné číslo s najviac %s desatinnými miestami." - -#: core/validators.py:362 -#, python-format -msgid "Make sure your uploaded file is at least %s bytes big." -msgstr "Presvedč sa, že posielaný súbor nemá menej ako %s bytov." - -#: core/validators.py:363 -#, python-format -msgid "Make sure your uploaded file is at most %s bytes big." -msgstr "Presvedč sa, že posielaný súbor nemá viac ako %s bytov." - -#: core/validators.py:376 -msgid "The format for this field is wrong." -msgstr "Formát pre toto pole je chybný." - -#: core/validators.py:391 -msgid "This field is invalid." -msgstr "Toto pole nie je platné." - -#: core/validators.py:426 -#, python-format -msgid "Could not retrieve anything from %s." -msgstr "Nič som nemohol získať z %s." - -#: core/validators.py:429 -#, python-format -msgid "" -"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +#: utils/translation/trans_real.py:381 +msgid "MONTH_DAY_FORMAT" msgstr "" -" URL %(url)s vrátilo neplatnú hlavičku Content-Type '%(contenttype)s'." -#: core/validators.py:462 -#, python-format -msgid "" -"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " -"\"%(start)s\".)" -msgstr "" -"Prosím zavri nezavretý %(tag)s popisovač v riadku %(line)s. (Riadok začína " -"s \"%(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 "" -"Nejaký text začínajúci na riadku %(line)s nie je povolený v tomto kontexte. " -"(Riadok začína s \"%(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\" na riadku %(line)s je neplatný atribút. (Riadok začína s \"%" -"(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>\" na riadku %(line)s je neplatný popisovač. (Riadok začína s \"%" -"(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 "" -"Popisovaču na riadku %(line)s chýba jeden alebo viac atribútov. (Riadok " -"začína s \"%(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 "" -"Atribút \"%(attr)s\" na riadku %(line)s má neplatnú hodnotu. (Riadok začína " -"s \"%(start)s\".)" - -#: template/defaultfilters.py:383 +#: template/defaultfilters.py:491 msgid "yes,no,maybe" -msgstr "ano,nie,možno" +msgstr "áno,nie,možno" -#~ msgid "Comment" -#~ msgstr "Komentár" - -#~ msgid "Comments" -#~ msgstr "Komentáre" - -#~ msgid "Delete this file." -#~ msgstr "Vymaž tento súbor." - -#~ msgid "label" -#~ msgstr "popis" - -#~ msgid "package" -#~ msgstr "balík" - -#~ msgid "packages" -#~ msgstr "balíky" - -#~ msgid "String (up to 50)" -#~ msgstr "Reťazec (do 50 )" diff --git a/django/conf/locale/sk/LC_MESSAGES/djangojs.mo b/django/conf/locale/sk/LC_MESSAGES/djangojs.mo index a4f5b84a53..1a168078c6 100644 Binary files a/django/conf/locale/sk/LC_MESSAGES/djangojs.mo and b/django/conf/locale/sk/LC_MESSAGES/djangojs.mo differ diff --git a/django/conf/locale/sk/LC_MESSAGES/djangojs.po b/django/conf/locale/sk/LC_MESSAGES/djangojs.po index df24a19442..f442a15ff1 100644 --- a/django/conf/locale/sk/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/sk/LC_MESSAGES/djangojs.po @@ -1,20 +1,15 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# VLADO LABATH , 2005. -# -#, fuzzy +# msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" +"Project-Id-Version: Django 1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-12-18 19:38-0500\n" -"PO-Revision-Date: 2005-12-18 19:26-0500\n" -"Last-Translator: VLADO LABATH \n" -"Language-Team: LANGUAGE \n" +"POT-Creation-Date: 2007-04-01 19:21+0200\n" +"PO-Revision-Date: 2007-04-03 21:48+0200\n" +"Last-Translator: <>\n" +"Language-Team: \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit" #: contrib/admin/media/js/SelectFilter2.js:33 #, perl-format @@ -23,15 +18,15 @@ msgstr "Možný %s" #: contrib/admin/media/js/SelectFilter2.js:41 msgid "Choose all" -msgstr "Vyber všetko" +msgstr "Vybrať všetko" #: contrib/admin/media/js/SelectFilter2.js:46 msgid "Add" -msgstr "Pridaj" +msgstr "Pridať" #: contrib/admin/media/js/SelectFilter2.js:48 msgid "Remove" -msgstr "Vymaž" +msgstr "Vymazať" #: contrib/admin/media/js/SelectFilter2.js:53 #, perl-format @@ -40,13 +35,13 @@ msgstr "Vybrané %s" #: contrib/admin/media/js/SelectFilter2.js:54 msgid "Select your choice(s) and click " -msgstr "Vyber si svoju voľbu a klikni" +msgstr "Vyberte položku a kliknite" #: contrib/admin/media/js/SelectFilter2.js:59 msgid "Clear all" -msgstr "Vyčisti všetko" +msgstr "Odstrániť vybrané" -#: contrib/admin/media/js/dateparse.js:26 +#: contrib/admin/media/js/dateparse.js:32 #: contrib/admin/media/js/calendar.js:24 msgid "" "January February March April May June July August September October November " @@ -55,7 +50,7 @@ msgstr "" "Január Február Marec Apríl Máj Jún Júl August September Október November " "December" -#: contrib/admin/media/js/dateparse.js:27 +#: contrib/admin/media/js/dateparse.js:33 msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" msgstr "Nedeľa Pondelok Utorok Streda Štvrtok Piatok Sobota" @@ -63,49 +58,59 @@ msgstr "Nedeľa Pondelok Utorok Streda Štvrtok Piatok Sobota" msgid "S M T W T F S" msgstr "N P U S Š P S" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80 +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34 +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72 +msgid "Show" +msgstr "Zobraziť" + +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63 +msgid "Hide" +msgstr "Skryť" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 msgid "Now" msgstr "Práve teraz" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51 msgid "Clock" msgstr "Hodiny" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78 msgid "Choose a time" -msgstr "Vyber čas" +msgstr "Vybrať čas" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 msgid "Midnight" msgstr "Polnoc" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 msgid "6 a.m." msgstr "6 ráno" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 msgid "Noon" msgstr "Poludnie" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183 msgid "Cancel" -msgstr "Zruš" +msgstr "Zrušiť" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111 -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177 msgid "Today" msgstr "Dnes" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132 msgid "Calendar" msgstr "Kalendár" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175 msgid "Yesterday" msgstr "Včera" -#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179 msgid "Tomorrow" msgstr "Zajtra" + diff --git a/django/conf/locale/sl/LC_MESSAGES/djangojs.mo b/django/conf/locale/sl/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000..9288529a3f Binary files /dev/null and b/django/conf/locale/sl/LC_MESSAGES/djangojs.mo differ diff --git a/django/conf/locale/sl/LC_MESSAGES/djangojs.po b/django/conf/locale/sl/LC_MESSAGES/djangojs.po new file mode 100644 index 0000000000..ef5edccda4 --- /dev/null +++ b/django/conf/locale/sl/LC_MESSAGES/djangojs.po @@ -0,0 +1,107 @@ +# Copyright (C) 2007 +# This file is distributed under the same license as the PACKAGE package. +# +msgid "" +msgstr "" +"Project-Id-Version: DJANGO-JS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-12-09 11:51+0100\n" +"PO-Revision-Date: 2007-03-31 21:29+0100\n" +"Last-Translator: Gasper Koren \n" +"Language-Team: SLOVENIAN \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Slovenian\n" +"X-Poedit-Country: SLOVENIA\n" + +#: contrib/admin/media/js/SelectFilter2.js:33 +#, perl-format +msgid "Available %s" +msgstr "Možne %s" + +#: contrib/admin/media/js/SelectFilter2.js:41 +msgid "Choose all" +msgstr "Izberi vse" + +#: contrib/admin/media/js/SelectFilter2.js:46 +msgid "Add" +msgstr "Dodaj" + +#: contrib/admin/media/js/SelectFilter2.js:48 +msgid "Remove" +msgstr "Odstrani" + +#: contrib/admin/media/js/SelectFilter2.js:53 +#, perl-format +msgid "Chosen %s" +msgstr "Izberite %s" + +#: contrib/admin/media/js/SelectFilter2.js:54 +msgid "Select your choice(s) and click " +msgstr "Izberite in kliknite" + +#: contrib/admin/media/js/SelectFilter2.js:59 +msgid "Clear all" +msgstr "Izbriši vse" + +#: 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 "Januar Februar Marec April Maj Junij Julij Avgust September Oktober November December" + +#: contrib/admin/media/js/dateparse.js:27 +msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" +msgstr "Nedelja Ponedeljek Torek Sreda Četrtek Petek Sobota" + +#: contrib/admin/media/js/calendar.js:25 +msgid "S M T W T F S" +msgstr "N P T S Č P S" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80 +msgid "Now" +msgstr "Sedaj" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48 +msgid "Clock" +msgstr "URA" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77 +msgid "Choose a time" +msgstr "Izberite čas" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 +msgid "Midnight" +msgstr "Polnoč" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 +msgid "6 a.m." +msgstr "Ob 6h" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 +msgid "Noon" +msgstr "Opoldne" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168 +msgid "Cancel" +msgstr "Prekliči" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162 +msgid "Today" +msgstr "Danes" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114 +msgid "Calendar" +msgstr "Koledar" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160 +msgid "Yesterday" +msgstr "Včeraj" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164 +msgid "Tomorrow" +msgstr "Jutri" + diff --git a/django/conf/locale/zh_CN/LC_MESSAGES/django.mo b/django/conf/locale/zh_CN/LC_MESSAGES/django.mo index 0d6bf90c0e..3b04920654 100644 Binary files a/django/conf/locale/zh_CN/LC_MESSAGES/django.mo and b/django/conf/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/zh_CN/LC_MESSAGES/django.po b/django/conf/locale/zh_CN/LC_MESSAGES/django.po index 2552b677bd..1f30a08b15 100644 --- a/django/conf/locale/zh_CN/LC_MESSAGES/django.po +++ b/django/conf/locale/zh_CN/LC_MESSAGES/django.po @@ -1344,7 +1344,7 @@ msgstr "四月" #: utils/dates.py:19 msgid "may" -msgstr "三月" +msgstr "五月" #: utils/dates.py:19 msgid "jun" diff --git a/django/conf/locale/zh_CN/LC_MESSAGES/djangojs.mo b/django/conf/locale/zh_CN/LC_MESSAGES/djangojs.mo index ec7580a862..f0127a55a0 100644 Binary files a/django/conf/locale/zh_CN/LC_MESSAGES/djangojs.mo and b/django/conf/locale/zh_CN/LC_MESSAGES/djangojs.mo differ diff --git a/django/conf/locale/zh_CN/LC_MESSAGES/djangojs.po b/django/conf/locale/zh_CN/LC_MESSAGES/djangojs.po index 610e61d17a..03abe3708c 100644 --- a/django/conf/locale/zh_CN/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/zh_CN/LC_MESSAGES/djangojs.po @@ -46,7 +46,7 @@ msgstr "清除全部" #: contrib/admin/media/js/dateparse.js:32 #: contrib/admin/media/js/calendar.js:24 msgid "January February March April May June July August September October November December" -msgstr "一月 二月 三月 四月 五月 六月 六月 七月 八月 九月 十月 十一月 十二月" +msgstr "一月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月" #: contrib/admin/media/js/dateparse.js:33 msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" diff --git a/django/conf/urls/defaults.py b/django/conf/urls/defaults.py index 49bc176ef3..1e87ea708a 100644 --- a/django/conf/urls/defaults.py +++ b/django/conf/urls/defaults.py @@ -11,9 +11,10 @@ def patterns(prefix, *args): pattern_list = [] for t in args: if isinstance(t, (list, tuple)): - pattern_list.append(url(prefix=prefix, *t)) - else: - pattern_list.append(t) + t = url(prefix=prefix, *t) + elif isinstance(t, RegexURLPattern): + t.add_prefix(prefix) + pattern_list.append(t) return pattern_list def url(regex, view, kwargs=None, name=None, prefix=''): @@ -21,5 +22,7 @@ def url(regex, view, kwargs=None, name=None, prefix=''): # For include(...) processing. return RegexURLResolver(regex, view[0], kwargs) else: - return RegexURLPattern(regex, prefix and (prefix + '.' + view) or view, kwargs, name) + if prefix and isinstance(view, basestring): + view = prefix + '.' + view + return RegexURLPattern(regex, view, kwargs, name) diff --git a/django/contrib/admin/media/css/forms.css b/django/contrib/admin/media/css/forms.css index 0cfe2ff28e..72e57501e9 100644 --- a/django/contrib/admin/media/css/forms.css +++ b/django/contrib/admin/media/css/forms.css @@ -26,7 +26,7 @@ form .aligned p, form .aligned ul { margin-left:7em; padding-left:30px; } form .aligned table p { margin-left:0; padding-left:0; } form .aligned p.help { padding-left:38px; } .aligned .vCheckboxLabel { float:none !important; display:inline; padding-left:4px; } -.colM .aligned .vLargeTextField, colM .aligned .vXMLLargeTextField { width:610px; } +.colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField { width:610px; } .checkbox-row p.help { margin-left:0; padding-left:0 !important; } /* WIDE FIELDSETS */ diff --git a/django/contrib/admin/templatetags/admin_modify.py b/django/contrib/admin/templatetags/admin_modify.py index e7a6cff262..ff189a405a 100644 --- a/django/contrib/admin/templatetags/admin_modify.py +++ b/django/contrib/admin/templatetags/admin_modify.py @@ -42,7 +42,7 @@ class FieldWidgetNode(template.Node): self.bound_field_var = bound_field_var def get_nodelist(cls, klass): - if not cls.nodelists.has_key(klass): + if klass not in cls.nodelists: try: field_class_name = klass.__name__ template_name = "widget/%s.html" % class_name_to_underscored(field_class_name) diff --git a/django/contrib/admin/templatetags/log.py b/django/contrib/admin/templatetags/log.py index 5caba2b795..8d52d2e944 100644 --- a/django/contrib/admin/templatetags/log.py +++ b/django/contrib/admin/templatetags/log.py @@ -11,9 +11,12 @@ class AdminLogNode(template.Node): return "" def render(self, context): - if self.user is not None and not self.user.isdigit(): - self.user = context[self.user].id - context[self.varname] = LogEntry.objects.filter(user__id__exact=self.user).select_related()[:self.limit] + if self.user is None: + context[self.varname] = LogEntry.objects.all().select_related()[:self.limit] + else: + if not self.user.isdigit(): + self.user = context[self.user].id + context[self.varname] = LogEntry.objects.filter(user__id__exact=self.user).select_related()[:self.limit] return '' class DoGetAdminLog: diff --git a/django/contrib/admin/views/auth.py b/django/contrib/admin/views/auth.py index c5dfaf7141..7ab34a24ee 100644 --- a/django/contrib/admin/views/auth.py +++ b/django/contrib/admin/views/auth.py @@ -17,7 +17,7 @@ def user_add_stage(request): if not errors: new_user = manipulator.save(new_data) msg = _('The %(name)s "%(obj)s" was added successfully.') % {'name': 'user', 'obj': new_user} - if request.POST.has_key("_addanother"): + if "_addanother" in request.POST: request.user.message_set.create(message=msg) return HttpResponseRedirect(request.path) else: @@ -29,7 +29,7 @@ def user_add_stage(request): return render_to_response('admin/auth/user/add_form.html', { 'title': _('Add user'), 'form': form, - 'is_popup': request.REQUEST.has_key('_popup'), + 'is_popup': '_popup' in request.REQUEST, 'add': True, 'change': False, 'has_delete_permission': False, @@ -61,7 +61,7 @@ def user_change_password(request, id): return render_to_response('admin/auth/user/change_password.html', { 'title': _('Change password: %s') % escape(user.username), 'form': form, - 'is_popup': request.REQUEST.has_key('_popup'), + 'is_popup': '_popup' in request.REQUEST, 'add': True, 'change': False, 'has_delete_permission': False, diff --git a/django/contrib/admin/views/decorators.py b/django/contrib/admin/views/decorators.py index 9dfe651fe6..5389ca4dff 100644 --- a/django/contrib/admin/views/decorators.py +++ b/django/contrib/admin/views/decorators.py @@ -12,7 +12,7 @@ LOGIN_FORM_KEY = 'this_is_the_login_form' def _display_login_form(request, error_message=''): request.session.set_test_cookie() - if request.POST and request.POST.has_key('post_data'): + if request.POST and 'post_data' in request.POST: # User has failed login BUT has previously saved post data. post_data = request.POST['post_data'] elif request.POST: @@ -48,7 +48,7 @@ def staff_member_required(view_func): def _checklogin(request, *args, **kwargs): if request.user.is_authenticated() and request.user.is_staff: # The user is valid. Continue to the admin page. - if request.POST.has_key('post_data'): + if 'post_data' in request.POST: # User must have re-authenticated through a different window # or tab. request.POST = _decode_post_data(request.POST['post_data']) @@ -57,7 +57,7 @@ def staff_member_required(view_func): assert hasattr(request, 'session'), "The Django admin requires session middleware to be installed. Edit your MIDDLEWARE_CLASSES setting to insert 'django.contrib.sessions.middleware.SessionMiddleware'." # If this isn't already the login page, display it. - if not request.POST.has_key(LOGIN_FORM_KEY): + if LOGIN_FORM_KEY not in request.POST: if request.POST: message = _("Please log in again, because your session has expired. Don't worry: Your submission has been saved.") else: @@ -90,11 +90,9 @@ def staff_member_required(view_func): if user.is_active and user.is_staff: login(request, user) # TODO: set last_login with an event. - user.last_login = datetime.datetime.now() - user.save() - if request.POST.has_key('post_data'): + if 'post_data' in request.POST: post_data = _decode_post_data(request.POST['post_data']) - if post_data and not post_data.has_key(LOGIN_FORM_KEY): + if post_data and LOGIN_FORM_KEY not in post_data: # overwrite request.POST with the saved post_data, and continue request.POST = post_data request.user = user diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py index e2011f04c5..e715fdf063 100644 --- a/django/contrib/admin/views/main.py +++ b/django/contrib/admin/views/main.py @@ -200,7 +200,7 @@ def _get_deleted_objects(deleted_objects, perms_needed, user, obj, opts, current opts_seen.append(related.opts) rel_opts_name = related.get_accessor_name() has_related_objs = False - + # related.get_accessor_name() could return None for symmetrical relationships if rel_opts_name: rel_objs = getattr(obj, rel_opts_name, None) @@ -247,12 +247,12 @@ class ChangeList(object): self.page_num = int(request.GET.get(PAGE_VAR, 0)) except ValueError: self.page_num = 0 - self.show_all = request.GET.has_key(ALL_VAR) - self.is_popup = request.GET.has_key(IS_POPUP_VAR) + self.show_all = ALL_VAR in request.GET + self.is_popup = IS_POPUP_VAR in request.GET self.params = dict(request.GET.items()) - if self.params.has_key(PAGE_VAR): + if PAGE_VAR in self.params: del self.params[PAGE_VAR] - if self.params.has_key(ERROR_FLAG): + if ERROR_FLAG in self.params: del self.params[ERROR_FLAG] self.order_field, self.order_type = self.get_ordering() @@ -282,7 +282,7 @@ class ChangeList(object): if k.startswith(r): del p[k] for k, v in new_params.items(): - if p.has_key(k) and v is None: + if k in p and v is None: del p[k] elif v is not None: p[k] = v @@ -344,7 +344,7 @@ class ChangeList(object): order_field, order_type = ordering[0][1:], 'desc' else: order_field, order_type = ordering[0], 'asc' - if params.has_key(ORDER_VAR): + if ORDER_VAR in params: try: field_name = self.list_display[int(params[ORDER_VAR])] try: @@ -362,7 +362,7 @@ class ChangeList(object): order_field = f.name except (IndexError, ValueError): pass # Invalid ordering specified. Just use the default. - if params.has_key(ORDER_TYPE_VAR) and params[ORDER_TYPE_VAR] in ('asc', 'desc'): + if ORDER_TYPE_VAR in params and params[ORDER_TYPE_VAR] in ('asc', 'desc'): order_type = params[ORDER_TYPE_VAR] return order_field, order_type @@ -370,7 +370,7 @@ class ChangeList(object): qs = self.root_query_set lookup_params = self.params.copy() # a dictionary of the query string for i in (ALL_VAR, ORDER_VAR, ORDER_TYPE_VAR, SEARCH_VAR, IS_POPUP_VAR): - if lookup_params.has_key(i): + if i in lookup_params: del lookup_params[i] # Apply lookup parameters from the query string. diff --git a/django/contrib/auth/__init__.py b/django/contrib/auth/__init__.py index dd3b8152e6..d37450805f 100644 --- a/django/contrib/auth/__init__.py +++ b/django/contrib/auth/__init__.py @@ -1,8 +1,8 @@ +import datetime from django.core.exceptions import ImproperlyConfigured SESSION_KEY = '_auth_user_id' BACKEND_SESSION_KEY = '_auth_user_backend' -LOGIN_URL = '/accounts/login/' REDIRECT_FIELD_NAME = 'next' def load_backend(path): @@ -49,6 +49,8 @@ def login(request, user): if user is None: user = request.user # TODO: It would be nice to support different login methods, like signed cookies. + user.last_login = datetime.datetime.now() + user.save() request.session[SESSION_KEY] = user.id request.session[BACKEND_SESSION_KEY] = user.backend diff --git a/django/contrib/auth/decorators.py b/django/contrib/auth/decorators.py index 37e948f8fe..2fb4a6f510 100644 --- a/django/contrib/auth/decorators.py +++ b/django/contrib/auth/decorators.py @@ -1,13 +1,16 @@ -from django.contrib.auth import LOGIN_URL, REDIRECT_FIELD_NAME +from django.contrib.auth import REDIRECT_FIELD_NAME from django.http import HttpResponseRedirect from urllib import quote -def user_passes_test(test_func, login_url=LOGIN_URL): +def user_passes_test(test_func, login_url=None): """ Decorator for views that checks that the user passes the given test, redirecting to the log-in page if necessary. The test should be a callable that takes the user object and returns True if the user passes. """ + if not login_url: + from django.conf import settings + login_url = settings.LOGIN_URL def _dec(view_func): def _checklogin(request, *args, **kwargs): if test_func(request.user): @@ -27,7 +30,7 @@ login_required.__doc__ = ( """ ) -def permission_required(perm, login_url=LOGIN_URL): +def permission_required(perm, login_url=None): """ Decorator for views that checks whether a user has a particular permission enabled, redirecting to the log-in page if necessary. diff --git a/django/contrib/auth/models.py b/django/contrib/auth/models.py index f92d6d7413..c653cdf156 100644 --- a/django/contrib/auth/models.py +++ b/django/contrib/auth/models.py @@ -17,6 +17,12 @@ def check_password(raw_password, enc_password): elif algo == 'sha1': import sha return hsh == sha.new(salt+raw_password).hexdigest() + elif algo == 'crypt': + try: + import crypt + except ImportError: + raise ValueError, "Crypt password algorithm not supported in this environment." + return hsh == crypt.crypt(raw_password, salt) raise ValueError, "Got unknown password algorithm type in password." class SiteProfileNotAvailable(Exception): @@ -95,8 +101,8 @@ class User(models.Model): is_staff = models.BooleanField(_('staff status'), default=False, help_text=_("Designates whether the user can log into this admin site.")) is_active = models.BooleanField(_('active'), default=True, help_text=_("Designates whether this user can log into the Django admin. Unselect this instead of deleting accounts.")) is_superuser = models.BooleanField(_('superuser status'), default=False, help_text=_("Designates that this user has all permissions without explicitly assigning them.")) - last_login = models.DateTimeField(_('last login'), default=models.LazyDate()) - date_joined = models.DateTimeField(_('date joined'), default=models.LazyDate()) + last_login = models.DateTimeField(_('last login'), default=datetime.datetime.now) + date_joined = models.DateTimeField(_('date joined'), default=datetime.datetime.now) groups = models.ManyToManyField(Group, verbose_name=_('groups'), blank=True, help_text=_("In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in.")) user_permissions = models.ManyToManyField(Permission, verbose_name=_('user permissions'), blank=True) @@ -258,7 +264,7 @@ class AnonymousUser(object): pass def __str__(self): - return 'AnonymousUser' + return _('AnonymousUser') def __eq__(self, other): return isinstance(other, self.__class__) diff --git a/django/contrib/auth/views.py b/django/contrib/auth/views.py index fda17b91fb..77350b9a8f 100644 --- a/django/contrib/auth/views.py +++ b/django/contrib/auth/views.py @@ -6,7 +6,7 @@ from django.template import RequestContext from django.contrib.sites.models import Site from django.http import HttpResponseRedirect from django.contrib.auth.decorators import login_required -from django.contrib.auth import LOGIN_URL, REDIRECT_FIELD_NAME +from django.contrib.auth import REDIRECT_FIELD_NAME def login(request, template_name='registration/login.html'): "Displays the login form and handles the login action." @@ -17,7 +17,8 @@ def login(request, template_name='registration/login.html'): if not errors: # Light security check -- make sure redirect_to isn't garbage. if not redirect_to or '://' in redirect_to or ' ' in redirect_to: - redirect_to = '/accounts/profile/' + from django.conf import settings + redirect_to = settings.LOGIN_REDIRECT_URL from django.contrib.auth import login login(request, manipulator.get_user()) request.session.delete_test_cookie() @@ -41,12 +42,18 @@ def logout(request, next_page=None, template_name='registration/logged_out.html' # Redirect to this page until the session has been cleared. return HttpResponseRedirect(next_page or request.path) -def logout_then_login(request, login_url=LOGIN_URL): +def logout_then_login(request, login_url=None): "Logs out the user if he is logged in. Then redirects to the log-in page." + if not login_url: + from django.conf import settings + login_url = settings.LOGIN_URL return logout(request, login_url) -def redirect_to_login(next, login_url=LOGIN_URL): +def redirect_to_login(next, login_url=None): "Redirects the user to the login page, passing the given 'next' page" + if not login_url: + from django.conf import settings + login_url = settings.LOGIN_URL return HttpResponseRedirect('%s?%s=%s' % (login_url, REDIRECT_FIELD_NAME, next)) def password_reset(request, is_admin_site=False, template_name='registration/password_reset_form.html', diff --git a/django/contrib/comments/templates/comments/form.html b/django/contrib/comments/templates/comments/form.html index c5aa7686a3..11eaa8d00d 100644 --- a/django/contrib/comments/templates/comments/form.html +++ b/django/contrib/comments/templates/comments/form.html @@ -3,7 +3,7 @@
                              {% if user.is_authenticated %} -

                              {% trans "Username:" %} {{ user.username }} ({% trans "Log out" %})

                              +

                              {% trans "Username:" %} {{ user.username }} ({% trans "Log out" %})

                              {% else %}


                              {% trans "Password:" %} ({% trans "Forgotten your password?" %})

                              {% endif %} diff --git a/django/contrib/comments/templatetags/comments.py b/django/contrib/comments/templatetags/comments.py index c3a2fd40d8..5c02c16f95 100644 --- a/django/contrib/comments/templatetags/comments.py +++ b/django/contrib/comments/templatetags/comments.py @@ -25,6 +25,7 @@ class CommentFormNode(template.Node): self.is_public = is_public def render(self, context): + from django.conf import settings from django.utils.text import normalize_newlines import base64 context.push() @@ -64,6 +65,7 @@ class CommentFormNode(template.Node): if self.rating_options: context['rating_range'], context['rating_choices'] = Comment.objects.get_rating_options(self.rating_options) context['hash'] = Comment.objects.get_security_hash(context['options'], context['photo_options'], context['rating_options'], context['target']) + context['logout_url'] = settings.LOGOUT_URL default_form = loader.get_template(COMMENT_FORM) output = default_form.render(context) context.pop() @@ -114,7 +116,7 @@ class CommentListNode(template.Node): comment_list = get_list_function(**kwargs).order_by(self.ordering + 'submit_date').select_related() if not self.free: - if context.has_key('user') and context['user'].is_authenticated(): + if 'user' in context and context['user'].is_authenticated(): user_id = context['user'].id context['user_can_moderate_comments'] = Comment.objects.user_is_moderator(context['user']) else: diff --git a/django/contrib/comments/views/comments.py b/django/contrib/comments/views/comments.py index 12330afe41..73a9b2c480 100644 --- a/django/contrib/comments/views/comments.py +++ b/django/contrib/comments/views/comments.py @@ -217,10 +217,10 @@ def post_comment(request): errors = manipulator.get_validation_errors(new_data) # If user gave correct username/password and wasn't already logged in, log them in # so they don't have to enter a username/password again. - if manipulator.get_user() and not manipulator.get_user().is_authenticated() and new_data.has_key('password') and manipulator.get_user().check_password(new_data['password']): + if manipulator.get_user() and not manipulator.get_user().is_authenticated() and 'password' in new_data and manipulator.get_user().check_password(new_data['password']): from django.contrib.auth import login login(request, manipulator.get_user()) - if errors or request.POST.has_key('preview'): + if errors or 'preview' in request.POST: class CommentFormWrapper(oldforms.FormWrapper): def __init__(self, manipulator, new_data, errors, rating_choices): oldforms.FormWrapper.__init__(self, manipulator, new_data, errors) @@ -244,7 +244,7 @@ def post_comment(request): 'rating_range': rating_range, 'rating_choices': rating_choices, }, context_instance=RequestContext(request)) - elif request.POST.has_key('post'): + elif 'post' in request.POST: # If the IP is banned, mail the admins, do NOT save the comment, and # serve up the "Thanks for posting" page as if the comment WAS posted. if request.META['REMOTE_ADDR'] in settings.BANNED_IPS: @@ -298,7 +298,7 @@ def post_free_comment(request): new_data['is_public'] = IS_PUBLIC in option_list manipulator = PublicFreeCommentManipulator() errors = manipulator.get_validation_errors(new_data) - if errors or request.POST.has_key('preview'): + if errors or 'preview' in request.POST: comment = errors and '' or manipulator.get_comment(new_data) return render_to_response('comments/free_preview.html', { 'comment': comment, @@ -307,7 +307,7 @@ def post_free_comment(request): 'target': target, 'hash': security_hash, }, context_instance=RequestContext(request)) - elif request.POST.has_key('post'): + elif 'post' in request.POST: # If the IP is banned, mail the admins, do NOT save the comment, and # serve up the "Thanks for posting" page as if the comment WAS posted. if request.META['REMOTE_ADDR'] in settings.BANNED_IPS: @@ -330,7 +330,7 @@ def comment_was_posted(request): The object the comment was posted on """ obj = None - if request.GET.has_key('c'): + if 'c' in request.GET: content_type_id, object_id = request.GET['c'].split(':') try: content_type = ContentType.objects.get(pk=content_type_id) diff --git a/django/db/models/fields/generic.py b/django/contrib/contenttypes/generic.py similarity index 94% rename from django/db/models/fields/generic.py rename to django/contrib/contenttypes/generic.py index 1b0661dbe9..f995ab2044 100644 --- a/django/db/models/fields/generic.py +++ b/django/contrib/contenttypes/generic.py @@ -16,18 +16,18 @@ class GenericForeignKey(object): Provides a generic relation to any object through content-type/object-id fields. """ - + def __init__(self, ct_field="content_type", fk_field="object_id"): self.ct_field = ct_field self.fk_field = fk_field - + def contribute_to_class(self, cls, name): - # Make sure the fields exist (these raise FieldDoesNotExist, + # Make sure the fields exist (these raise FieldDoesNotExist, # which is a fine error to raise here) self.name = name self.model = cls self.cache_attr = "_%s_cache" % name - + # For some reason I don't totally understand, using weakrefs here doesn't work. dispatcher.connect(self.instance_pre_init, signal=signals.pre_init, sender=cls, weak=False) @@ -35,18 +35,18 @@ class GenericForeignKey(object): setattr(cls, name, self) def instance_pre_init(self, signal, sender, args, kwargs): - # Handle initalizing an object with the generic FK instaed of - # content-type/object-id fields. - if kwargs.has_key(self.name): + # Handle initalizing an object with the generic FK instaed of + # content-type/object-id fields. + if self.name in kwargs: value = kwargs.pop(self.name) kwargs[self.ct_field] = self.get_content_type(value) kwargs[self.fk_field] = value._get_pk_val() - + def get_content_type(self, obj): # Convenience function using get_model avoids a circular import when using this model ContentType = get_model("contenttypes", "contenttype") return ContentType.objects.get_for_model(obj) - + def __get__(self, instance, instance_type=None): if instance is None: raise AttributeError, "%s must be accessed via instance" % self.name @@ -77,21 +77,21 @@ class GenericForeignKey(object): setattr(instance, self.ct_field, ct) setattr(instance, self.fk_field, fk) setattr(instance, self.cache_attr, value) - + class GenericRelation(RelatedField, Field): """Provides an accessor to generic related objects (i.e. comments)""" def __init__(self, to, **kwargs): kwargs['verbose_name'] = kwargs.get('verbose_name', None) - kwargs['rel'] = GenericRel(to, + kwargs['rel'] = GenericRel(to, related_name=kwargs.pop('related_name', None), limit_choices_to=kwargs.pop('limit_choices_to', None), symmetrical=kwargs.pop('symmetrical', True)) - + # Override content-type/object-id field names on the related class self.object_id_field_name = kwargs.pop("object_id_field", "object_id") - self.content_type_field_name = kwargs.pop("content_type_field", "content_type") - + self.content_type_field_name = kwargs.pop("content_type_field", "content_type") + kwargs['blank'] = True kwargs['editable'] = False kwargs['serialize'] = False @@ -116,7 +116,7 @@ class GenericRelation(RelatedField, Field): def m2m_column_name(self): return self.object_id_field_name - + def m2m_reverse_name(self): return self.object_id_field_name @@ -131,13 +131,13 @@ class GenericRelation(RelatedField, Field): def contribute_to_related_class(self, cls, related): pass - + def set_attributes_from_rel(self): pass def get_internal_type(self): return "ManyToManyField" - + class ReverseGenericRelatedObjectsDescriptor(object): """ This class provides the functionality that makes the related-object @@ -191,12 +191,12 @@ def create_generic_related_manager(superclass): Factory function for a manager that subclasses 'superclass' (which is a Manager) and adds behavior for generic related objects. """ - + class GenericRelatedObjectManager(superclass): def __init__(self, model=None, core_filters=None, instance=None, symmetrical=None, join_table=None, source_col_name=None, target_col_name=None, content_type=None, content_type_field_name=None, object_id_field_name=None): - + super(GenericRelatedObjectManager, self).__init__() self.core_filters = core_filters or {} self.model = model @@ -210,10 +210,10 @@ def create_generic_related_manager(superclass): self.content_type_field_name = content_type_field_name self.object_id_field_name = object_id_field_name self.pk_val = self.instance._get_pk_val() - + def get_query_set(self): query = { - '%s__pk' % self.content_type_field_name : self.content_type.id, + '%s__pk' % self.content_type_field_name : self.content_type.id, '%s__exact' % self.object_id_field_name : self.pk_val, } return superclass.get_query_set(self).filter(**query) @@ -250,7 +250,11 @@ class GenericRel(ManyToManyRel): self.to = to self.num_in_admin = 0 self.related_name = related_name + self.filter_interface = None self.limit_choices_to = limit_choices_to or {} self.edit_inline = False + self.raw_id_admin = False self.symmetrical = symmetrical self.multiple = True + assert not (self.raw_id_admin and self.filter_interface), \ + "Generic relations may not use both raw_id_admin and filter_interface" diff --git a/django/contrib/databrowse/__init__.py b/django/contrib/databrowse/__init__.py new file mode 100644 index 0000000000..e2f48ac822 --- /dev/null +++ b/django/contrib/databrowse/__init__.py @@ -0,0 +1 @@ +from django.contrib.databrowse.sites import DatabrowsePlugin, ModelDatabrowse, DatabrowseSite, site diff --git a/django/contrib/databrowse/datastructures.py b/django/contrib/databrowse/datastructures.py new file mode 100644 index 0000000000..24f2e68f46 --- /dev/null +++ b/django/contrib/databrowse/datastructures.py @@ -0,0 +1,192 @@ +""" +These classes are light wrappers around Django's database API that provide +convenience functionality and permalink functions for the databrowse app. +""" + +from django.db import models +from django.utils import dateformat +from django.utils.text import capfirst +from django.utils.translation import get_date_formats + +EMPTY_VALUE = '(None)' + +class EasyModel(object): + def __init__(self, site, model): + self.site = site + self.model = model + self.model_list = site.registry.keys() + self.verbose_name = model._meta.verbose_name + self.verbose_name_plural = model._meta.verbose_name_plural + + def __repr__(self): + return '' % self.model._meta.object_name + + def model_databrowse(self): + "Returns the ModelDatabrowse class for this model." + return self.site.registry[self.model] + + def url(self): + return '%s%s/%s/' % (self.site.root_url, self.model._meta.app_label, self.model._meta.module_name) + + def objects(self, **kwargs): + for obj in self.model._default_manager.filter(**kwargs): + yield EasyInstance(self, obj) + + def object_by_pk(self, pk): + return EasyInstance(self, self.model._default_manager.get(pk=pk)) + + def sample_objects(self): + for obj in self.model._default_manager.all()[:3]: + yield EasyInstance(self, obj) + + def field(self, name): + try: + f = self.model._meta.get_field(name) + except models.FieldDoesNotExist: + return None + return EasyField(self, f) + + def fields(self): + return [EasyField(self, f) for f in (self.model._meta.fields + self.model._meta.many_to_many)] + +class EasyField(object): + def __init__(self, easy_model, field): + self.model, self.field = easy_model, field + + def __repr__(self): + return '' % (self.model.model._meta.object_name, self.field.name) + + def choices(self): + for value, label in self.field.choices: + yield EasyChoice(self.model, self, value, label) + + def url(self): + if self.field.choices: + return '%s%s/%s/%s/' % (self.model.site.root_url, self.model.model._meta.app_label, self.model.model._meta.module_name, self.field.name) + elif self.field.rel: + return '%s%s/%s/' % (self.model.site.root_url, self.model.model._meta.app_label, self.model.model._meta.module_name) + +class EasyChoice(object): + def __init__(self, easy_model, field, value, label): + self.model, self.field = easy_model, field + self.value, self.label = value, label + + def __repr__(self): + return '' % (self.model.model._meta.object_name, self.field.name) + + def url(self): + return '%s%s/%s/%s/%s/' % (self.model.site.root_url, self.model.model._meta.app_label, self.model.model._meta.module_name, self.field.field.name, self.value) + +class EasyInstance(object): + def __init__(self, easy_model, instance): + self.model, self.instance = easy_model, instance + + def __repr__(self): + return '' % (self.model.model._meta.object_name, self.instance._get_pk_val()) + + def __str__(self): + val = str(self.instance) + if len(val) > 30: + return val[:30] + '...' + return val + + def pk(self): + return self.instance._get_pk_val() + + def url(self): + return '%s%s/%s/objects/%s/' % (self.model.site.root_url, self.model.model._meta.app_label, self.model.model._meta.module_name, self.pk()) + + def fields(self): + """ + Generator that yields EasyInstanceFields for each field in this + EasyInstance's model. + """ + for f in self.model.model._meta.fields + self.model.model._meta.many_to_many: + yield EasyInstanceField(self.model, self, f) + + def related_objects(self): + """ + Generator that yields dictionaries of all models that have this + EasyInstance's model as a ForeignKey or ManyToManyField, along with + lists of related objects. + """ + for rel_object in self.model.model._meta.get_all_related_objects() + self.model.model._meta.get_all_related_many_to_many_objects(): + if rel_object.model not in self.model.model_list: + continue # Skip models that aren't in the model_list + em = EasyModel(self.model.site, rel_object.model) + yield { + 'model': em, + 'related_field': rel_object.field.verbose_name, + 'object_list': [EasyInstance(em, i) for i in getattr(self.instance, rel_object.get_accessor_name()).all()], + } + +class EasyInstanceField(object): + def __init__(self, easy_model, instance, field): + self.model, self.field, self.instance = easy_model, field, instance + self.raw_value = getattr(instance.instance, field.name) + + def __repr__(self): + return '' % (self.model.model._meta.object_name, self.field.name) + + def values(self): + """ + Returns a list of values for this field for this instance. It's a list + so we can accomodate many-to-many fields. + """ + # This import is deliberately inside the function because it causes + # some settings to be imported, and we don't want to do that at the + # module level. + if self.field.rel: + if isinstance(self.field.rel, models.ManyToOneRel): + objs = getattr(self.instance.instance, self.field.name) + elif isinstance(self.field.rel, models.ManyToManyRel): # ManyToManyRel + return list(getattr(self.instance.instance, self.field.name).all()) + elif self.field.choices: + objs = dict(self.field.choices).get(self.raw_value, EMPTY_VALUE) + elif isinstance(self.field, models.DateField) or isinstance(self.field, models.TimeField): + if self.raw_value: + date_format, datetime_format, time_format = get_date_formats() + if isinstance(self.field, models.DateTimeField): + objs = capfirst(dateformat.format(self.raw_value, datetime_format)) + elif isinstance(self.field, models.TimeField): + objs = capfirst(dateformat.time_format(self.raw_value, time_format)) + else: + objs = capfirst(dateformat.format(self.raw_value, date_format)) + else: + objs = EMPTY_VALUE + elif isinstance(self.field, models.BooleanField) or isinstance(self.field, models.NullBooleanField): + objs = {True: 'Yes', False: 'No', None: 'Unknown'}[self.raw_value] + else: + objs = self.raw_value + return [objs] + + def urls(self): + "Returns a list of (value, URL) tuples." + # First, check the urls() method for each plugin. + plugin_urls = [] + for plugin_name, plugin in self.model.model_databrowse().plugins.items(): + urls = plugin.urls(plugin_name, self) + if urls is not None: + #plugin_urls.append(urls) + values = self.values() + return zip(self.values(), urls) + if self.field.rel: + m = EasyModel(self.model.site, self.field.rel.to) + if self.field.rel.to in self.model.model_list: + lst = [] + for value in self.values(): + url = '%s%s/%s/objects/%s/' % (self.model.site.root_url, m.model._meta.app_label, m.model._meta.module_name, value._get_pk_val()) + lst.append((str(value), url)) + else: + lst = [(value, None) for value in self.values()] + elif self.field.choices: + lst = [] + for value in self.values(): + url = '%s%s/%s/fields/%s/%s/' % (self.model.site.root_url, self.model.model._meta.app_label, self.model.model._meta.module_name, self.field.name, self.raw_value) + lst.append((value, url)) + elif isinstance(self.field, models.URLField): + val = self.values()[0] + lst = [(val, val)] + else: + lst = [(self.values()[0], None)] + return lst diff --git a/django/contrib/databrowse/plugins/__init__.py b/django/contrib/databrowse/plugins/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/django/contrib/databrowse/plugins/calendars.py b/django/contrib/databrowse/plugins/calendars.py new file mode 100644 index 0000000000..7977524cdb --- /dev/null +++ b/django/contrib/databrowse/plugins/calendars.py @@ -0,0 +1,84 @@ +from django import http +from django.db import models +from django.contrib.databrowse.datastructures import EasyModel +from django.contrib.databrowse.sites import DatabrowsePlugin +from django.shortcuts import render_to_response +from django.utils.text import capfirst +from django.utils.translation import get_date_formats +from django.views.generic import date_based +import datetime +import time + +class CalendarPlugin(DatabrowsePlugin): + def __init__(self, field_names=None): + self.field_names = field_names + + def field_dict(self, model): + """ + Helper function that returns a dictionary of all DateFields or + DateTimeFields in the given model. If self.field_names is set, it takes + take that into account when building the dictionary. + """ + if self.field_names is None: + return dict([(f.name, f) for f in model._meta.fields if isinstance(f, models.DateField)]) + else: + return dict([(f.name, f) for f in model._meta.fields if isinstance(f, models.DateField) and f.name in self.field_names]) + + def model_index_html(self, request, model, site): + fields = self.field_dict(model) + if not fields: + return '' + return '

                              View calendar by: %s

                              ' % \ + ', '.join(['%s' % (f.name, capfirst(f.verbose_name)) for f in fields.values()]) + + def urls(self, plugin_name, easy_instance_field): + if isinstance(easy_instance_field.field, models.DateField): + return ['%s%s/%s/%s/%s/%s/' % (easy_instance_field.model.url(), + plugin_name, easy_instance_field.field.name, + easy_instance_field.raw_value.year, + easy_instance_field.raw_value.strftime('%b').lower(), + easy_instance_field.raw_value.day)] + + def model_view(self, request, model_databrowse, url): + self.model, self.site = model_databrowse.model, model_databrowse.site + self.fields = self.field_dict(self.model) + + # If the model has no DateFields, there's no point in going further. + if not self.fields: + raise http.Http404('The requested model has no calendars.') + + if url is None: + return self.homepage_view(request) + url_bits = url.split('/') + if self.fields.has_key(url_bits[0]): + return self.calendar_view(request, self.fields[url_bits[0]], *url_bits[1:]) + + raise http.Http404('The requested page does not exist.') + + def homepage_view(self, request): + easy_model = EasyModel(self.site, self.model) + field_list = self.fields.values() + field_list.sort(lambda x, y: cmp(x.verbose_name, y.verbose_name)) + return render_to_response('databrowse/calendar_homepage.html', {'root_url': self.site.root_url, 'model': easy_model, 'field_list': field_list}) + + def calendar_view(self, request, field, year=None, month=None, day=None): + easy_model = EasyModel(self.site, self.model) + extra_context = {'root_url': self.site.root_url, 'model': easy_model, 'field': field} + if day is not None: + # TODO: The objects in this template should be EasyInstances + return date_based.archive_day(request, year, month, day, self.model.objects.all(), field.name, + template_name='databrowse/calendar_day.html', allow_empty=False, allow_future=True, + extra_context=extra_context) + elif month is not None: + return date_based.archive_month(request, year, month, self.model.objects.all(), field.name, + template_name='databrowse/calendar_month.html', allow_empty=False, allow_future=True, + extra_context=extra_context) + elif year is not None: + return date_based.archive_year(request, year, self.model.objects.all(), field.name, + template_name='databrowse/calendar_year.html', allow_empty=False, allow_future=True, + extra_context=extra_context) + else: + return date_based.archive_index(request, self.model.objects.all(), field.name, + template_name='databrowse/calendar_main.html', allow_empty=True, allow_future=True, + extra_context=extra_context) + assert False, ('%s, %s, %s, %s' % (field, year, month, day)) diff --git a/django/contrib/databrowse/plugins/fieldchoices.py b/django/contrib/databrowse/plugins/fieldchoices.py new file mode 100644 index 0000000000..49d17ff148 --- /dev/null +++ b/django/contrib/databrowse/plugins/fieldchoices.py @@ -0,0 +1,72 @@ +from django import http +from django.db import models +from django.contrib.databrowse.datastructures import EasyModel +from django.contrib.databrowse.sites import DatabrowsePlugin +from django.shortcuts import render_to_response +from django.utils.text import capfirst +from django.views.generic import date_based +import datetime +import time + +class FieldChoicePlugin(DatabrowsePlugin): + def __init__(self, field_filter=None): + # If field_filter is given, it should be a callable that takes a + # Django database Field instance and returns True if that field should + # be included. If field_filter is None, that all fields will be used. + self.field_filter = field_filter + + def field_dict(self, model): + """ + Helper function that returns a dictionary of all fields in the given + model. If self.field_filter is set, it only includes the fields that + match the filter. + """ + if self.field_filter: + return dict([(f.name, f) for f in model._meta.fields if self.field_filter(f)]) + else: + return dict([(f.name, f) for f in model._meta.fields if not f.rel and not f.primary_key and not f.unique and not isinstance(f, (models.AutoField, models.TextField))]) + + def model_index_html(self, request, model, site): + fields = self.field_dict(model) + if not fields: + return '' + return '

                              View by: %s

                              ' % \ + ', '.join(['%s' % (f.name, capfirst(f.verbose_name)) for f in fields.values()]) + + def urls(self, plugin_name, easy_instance_field): + if easy_instance_field.field in self.field_dict(easy_instance_field.model.model).values(): + return ['%s%s/%s/%s/' % (easy_instance_field.model.url(), + plugin_name, easy_instance_field.field.name, + easy_instance_field.raw_value)] + + def model_view(self, request, model_databrowse, url): + self.model, self.site = model_databrowse.model, model_databrowse.site + self.fields = self.field_dict(self.model) + + # If the model has no fields with choices, there's no point in going + # further. + if not self.fields: + raise http.Http404('The requested model has no fields.') + + if url is None: + return self.homepage_view(request) + url_bits = url.split('/', 1) + if self.fields.has_key(url_bits[0]): + return self.field_view(request, self.fields[url_bits[0]], *url_bits[1:]) + + raise http.Http404('The requested page does not exist.') + + def homepage_view(self, request): + easy_model = EasyModel(self.site, self.model) + field_list = self.fields.values() + field_list.sort(lambda x, y: cmp(x.verbose_name, y.verbose_name)) + return render_to_response('databrowse/fieldchoice_homepage.html', {'root_url': self.site.root_url, 'model': easy_model, 'field_list': field_list}) + + def field_view(self, request, field, value=None): + easy_model = EasyModel(self.site, self.model) + easy_field = easy_model.field(field.name) + if value is not None: + obj_list = easy_model.objects(**{field.name: value}) + return render_to_response('databrowse/fieldchoice_detail.html', {'root_url': self.site.root_url, 'model': easy_model, 'field': easy_field, 'value': value, 'object_list': obj_list}) + obj_list = [v[field.name] for v in self.model._default_manager.distinct().order_by(field.name).values(field.name)] + return render_to_response('databrowse/fieldchoice_list.html', {'root_url': self.site.root_url, 'model': easy_model, 'field': easy_field, 'object_list': obj_list}) diff --git a/django/contrib/databrowse/plugins/objects.py b/django/contrib/databrowse/plugins/objects.py new file mode 100644 index 0000000000..7326566655 --- /dev/null +++ b/django/contrib/databrowse/plugins/objects.py @@ -0,0 +1,14 @@ +from django import http +from django.contrib.databrowse.datastructures import EasyModel +from django.contrib.databrowse.sites import DatabrowsePlugin +from django.shortcuts import render_to_response +import urlparse + +class ObjectDetailPlugin(DatabrowsePlugin): + def model_view(self, request, model_databrowse, url): + # If the object ID wasn't provided, redirect to the model page, which is one level up. + if url is None: + return http.HttpResponseRedirect(urlparse.urljoin(request.path, '../')) + easy_model = EasyModel(model_databrowse.site, model_databrowse.model) + obj = easy_model.object_by_pk(url) + return render_to_response('databrowse/object_detail.html', {'object': obj, 'root_url': model_databrowse.site.root_url}) diff --git a/django/contrib/databrowse/sites.py b/django/contrib/databrowse/sites.py new file mode 100644 index 0000000000..8521343e50 --- /dev/null +++ b/django/contrib/databrowse/sites.py @@ -0,0 +1,148 @@ +from django import http +from django.db import models +from django.contrib.databrowse.datastructures import EasyModel, EasyChoice +from django.shortcuts import render_to_response + +class AlreadyRegistered(Exception): + pass + +class NotRegistered(Exception): + pass + +class DatabrowsePlugin(object): + def urls(self, plugin_name, easy_instance_field): + """ + Given an EasyInstanceField object, returns a list of URLs for this + plugin's views of this object. These URLs should be absolute. + + Returns None if the EasyInstanceField object doesn't get a + list of plugin-specific URLs. + """ + return None + + def model_index_html(self, request, model, site): + """ + Returns a snippet of HTML to include on the model index page. + """ + return '' + + def model_view(self, request, model_databrowse, url): + """ + Handles main URL routing for a plugin's model-specific pages. + """ + raise NotImplementedError + +class ModelDatabrowse(object): + plugins = {} + + def __init__(self, model, site): + self.model = model + self.site = site + + def root(self, request, url): + """ + Handles main URL routing for the databrowse app. + + `url` is the remainder of the URL -- e.g. 'objects/3'. + """ + # Delegate to the appropriate method, based on the URL. + if url is None: + return self.main_view(request) + try: + plugin_name, rest_of_url = url.split('/', 1) + except ValueError: # need more than 1 value to unpack + plugin_name, rest_of_url = url, None + try: + plugin = self.plugins[plugin_name] + except KeyError: + raise http.Http404('A plugin with the requested name does not exist.') + return plugin.model_view(request, self, rest_of_url) + + def main_view(self, request): + easy_model = EasyModel(self.site, self.model) + html_snippets = '\n'.join([p.model_index_html(request, self.model, self.site) for p in self.plugins.values()]) + return render_to_response('databrowse/model_detail.html', { + 'model': easy_model, + 'root_url': self.site.root_url, + 'plugin_html': html_snippets, + }) + +class DatabrowseSite(object): + def __init__(self): + self.registry = {} # model_class -> databrowse_class + self.root_url = None + + def register(self, model_or_iterable, databrowse_class=None, **options): + """ + Registers the given model(s) with the given databrowse site. + + The model(s) should be Model classes, not instances. + + If a databrowse class isn't given, it will use DefaultModelDatabrowse + (the default databrowse options). + + If a model is already registered, this will raise AlreadyRegistered. + """ + databrowse_class = databrowse_class or DefaultModelDatabrowse + if issubclass(model_or_iterable, models.Model): + model_or_iterable = [model_or_iterable] + for model in model_or_iterable: + if model in self.registry: + raise AlreadyRegistered('The model %s is already registered' % model.__class__.__name__) + self.registry[model] = databrowse_class + + def unregister(self, model_or_iterable): + """ + Unregisters the given model(s). + + If a model isn't already registered, this will raise NotRegistered. + """ + if issubclass(model_or_iterable, models.Model): + model_or_iterable = [model_or_iterable] + for model in model_or_iterable: + if model not in self.registry: + raise NotRegistered('The model %s is not registered' % model.__class__.__name__) + del self.registry[model] + + def root(self, request, url): + """ + Handles main URL routing for the databrowse app. + + `url` is the remainder of the URL -- e.g. 'comments/comment/'. + """ + self.root_url = request.path[:len(request.path) - len(url)] + url = url.rstrip('/') # Trim trailing slash, if it exists. + + if url == '': + return self.index(request) + elif '/' in url: + return self.model_page(request, *url.split('/', 2)) + + raise http.Http404('The requested databrowse page does not exist.') + + def index(self, request): + m_list = [EasyModel(self, m) for m in self.registry.keys()] + return render_to_response('databrowse/homepage.html', {'model_list': m_list, 'root_url': self.root_url}) + + def model_page(self, request, app_label, model_name, rest_of_url=None): + """ + Handles the model-specific functionality of the databrowse site, delegating + to the appropriate ModelDatabrowse class. + """ + model = models.get_model(app_label, model_name) + if model is None: + raise http.Http404("App %r, model %r, not found." % (app_label, model_name)) + try: + databrowse_class = self.registry[model] + except KeyError: + raise http.Http404("This model exists but has not been registered with databrowse.") + return databrowse_class(model, self).root(request, rest_of_url) + +site = DatabrowseSite() + +from django.contrib.databrowse.plugins.calendars import CalendarPlugin +from django.contrib.databrowse.plugins.objects import ObjectDetailPlugin +from django.contrib.databrowse.plugins.fieldchoices import FieldChoicePlugin + +class DefaultModelDatabrowse(ModelDatabrowse): + plugins = {'objects': ObjectDetailPlugin(), 'calendars': CalendarPlugin(), 'fields': FieldChoicePlugin()} diff --git a/django/contrib/databrowse/templates/databrowse/base.html b/django/contrib/databrowse/templates/databrowse/base.html new file mode 100644 index 0000000000..30ba5bb2fc --- /dev/null +++ b/django/contrib/databrowse/templates/databrowse/base.html @@ -0,0 +1,58 @@ + + + +{% block title %}{% endblock %} + + + + +
                              +{% block content %}{% endblock %} +
                              + + diff --git a/django/contrib/databrowse/templates/databrowse/calendar_day.html b/django/contrib/databrowse/templates/databrowse/calendar_day.html new file mode 100644 index 0000000000..d45fb3e768 --- /dev/null +++ b/django/contrib/databrowse/templates/databrowse/calendar_day.html @@ -0,0 +1,17 @@ +{% extends "databrowse/base.html" %} + +{% block title %}{{ model.verbose_name_plural|capfirst }} with {{ field.verbose_name }} {{ day|date:"F j, Y" }}{% endblock %} + +{% block content %} + + + +

                              {{ model.verbose_name_plural|capfirst }} with {{ field.verbose_name }} on {{ day|date:"F j, Y" }}

                              + +
                                +{% for object in object_list %} +
                              • {{ object }}
                              • +{% endfor %} +
                              + +{% endblock %} diff --git a/django/contrib/databrowse/templates/databrowse/calendar_homepage.html b/django/contrib/databrowse/templates/databrowse/calendar_homepage.html new file mode 100644 index 0000000000..5bbc42e353 --- /dev/null +++ b/django/contrib/databrowse/templates/databrowse/calendar_homepage.html @@ -0,0 +1,17 @@ +{% extends "databrowse/base.html" %} + +{% block title %}Calendars{% endblock %} + +{% block content %} + + + +

                              Calendars

                              + + + +{% endblock %} diff --git a/django/contrib/databrowse/templates/databrowse/calendar_main.html b/django/contrib/databrowse/templates/databrowse/calendar_main.html new file mode 100644 index 0000000000..7f9ba03bbe --- /dev/null +++ b/django/contrib/databrowse/templates/databrowse/calendar_main.html @@ -0,0 +1,17 @@ +{% extends "databrowse/base.html" %} + +{% block title %}{{ field.verbose_name|capfirst }} calendar{% endblock %} + +{% block content %} + + + +

                              {{ model.verbose_name_plural|capfirst }} by {{ field.verbose_name }}

                              + + + +{% endblock %} diff --git a/django/contrib/databrowse/templates/databrowse/calendar_month.html b/django/contrib/databrowse/templates/databrowse/calendar_month.html new file mode 100644 index 0000000000..51a25967f8 --- /dev/null +++ b/django/contrib/databrowse/templates/databrowse/calendar_month.html @@ -0,0 +1,17 @@ +{% extends "databrowse/base.html" %} + +{% block title %}{{ model.verbose_name_plural|capfirst }} with {{ field.verbose_name }} in {{ month|date:"F Y" }}{% endblock %} + +{% block content %} + + + +

                              {{ model.verbose_name_plural|capfirst }} with {{ field.verbose_name }} in {{ month|date:"F Y" }}

                              + +
                                +{% for object in object_list %} +
                              • {{ object }}
                              • +{% endfor %} +
                              + +{% endblock %} diff --git a/django/contrib/databrowse/templates/databrowse/calendar_year.html b/django/contrib/databrowse/templates/databrowse/calendar_year.html new file mode 100644 index 0000000000..676ae88e27 --- /dev/null +++ b/django/contrib/databrowse/templates/databrowse/calendar_year.html @@ -0,0 +1,17 @@ +{% extends "databrowse/base.html" %} + +{% block title %}{{ model.verbose_name_plural|capfirst }} with {{ field.verbose_name }} in {{ year }}{% endblock %} + +{% block content %} + + + +

                              {{ model.verbose_name_plural|capfirst }} with {{ field.verbose_name }} in {{ year }}

                              + + + +{% endblock %} diff --git a/django/contrib/databrowse/templates/databrowse/choice_detail.html b/django/contrib/databrowse/templates/databrowse/choice_detail.html new file mode 100644 index 0000000000..977a4a482f --- /dev/null +++ b/django/contrib/databrowse/templates/databrowse/choice_detail.html @@ -0,0 +1,17 @@ +{% extends "databrowse/base.html" %} + +{% block title %}{{ model.verbose_name_plural|capfirst }} by {{ field.field.verbose_name }}: {{ value|escape }}{% endblock %} + +{% block content %} + + + +

                              {{ model.verbose_name_plural|capfirst }} by {{ field.field.verbose_name }}: {{ value|escape }}

                              + +
                                +{% for object in object_list %} +
                              • {{ object }}
                              • +{% endfor %} +
                              + +{% endblock %} diff --git a/django/contrib/databrowse/templates/databrowse/choice_list.html b/django/contrib/databrowse/templates/databrowse/choice_list.html new file mode 100644 index 0000000000..b15531a0fd --- /dev/null +++ b/django/contrib/databrowse/templates/databrowse/choice_list.html @@ -0,0 +1,17 @@ +{% extends "databrowse/base.html" %} + +{% block title %}{{ model.verbose_name_plural|capfirst }} by {{ field.field.verbose_name }}{% endblock %} + +{% block content %} + + + +

                              {{ model.verbose_name_plural|capfirst }} by {{ field.field.verbose_name }}

                              + + + +{% endblock %} diff --git a/django/contrib/databrowse/templates/databrowse/fieldchoice_detail.html b/django/contrib/databrowse/templates/databrowse/fieldchoice_detail.html new file mode 100644 index 0000000000..a620ec931c --- /dev/null +++ b/django/contrib/databrowse/templates/databrowse/fieldchoice_detail.html @@ -0,0 +1,17 @@ +{% extends "databrowse/base.html" %} + +{% block title %}{{ model.verbose_name_plural|capfirst|escape }} with {{ field.field.verbose_name|escape }} {{ value|escape }}{% endblock %} + +{% block content %} + + + +

                              {{ model.verbose_name_plural|capfirst|escape }} with {{ field.field.verbose_name|escape }} {{ value|escape }}

                              + + + +{% endblock %} diff --git a/django/contrib/databrowse/templates/databrowse/fieldchoice_homepage.html b/django/contrib/databrowse/templates/databrowse/fieldchoice_homepage.html new file mode 100644 index 0000000000..ad842c1e6d --- /dev/null +++ b/django/contrib/databrowse/templates/databrowse/fieldchoice_homepage.html @@ -0,0 +1,17 @@ +{% extends "databrowse/base.html" %} + +{% block title %}Browsable fields in {{ model.verbose_name_plural|escape }}{% endblock %} + +{% block content %} + + + +

                              Browsable fields in {{ model.verbose_name_plural }}

                              + + + +{% endblock %} diff --git a/django/contrib/databrowse/templates/databrowse/fieldchoice_list.html b/django/contrib/databrowse/templates/databrowse/fieldchoice_list.html new file mode 100644 index 0000000000..686e6bc533 --- /dev/null +++ b/django/contrib/databrowse/templates/databrowse/fieldchoice_list.html @@ -0,0 +1,17 @@ +{% extends "databrowse/base.html" %} + +{% block title %}{{ model.verbose_name_plural|capfirst|escape }} by {{ field.field.verbose_name|escape }}{% endblock %} + +{% block content %} + + + +

                              {{ model.verbose_name_plural|capfirst|escape }} by {{ field.field.verbose_name|escape }}

                              + + + +{% endblock %} diff --git a/django/contrib/databrowse/templates/databrowse/homepage.html b/django/contrib/databrowse/templates/databrowse/homepage.html new file mode 100644 index 0000000000..ebf3ceca80 --- /dev/null +++ b/django/contrib/databrowse/templates/databrowse/homepage.html @@ -0,0 +1,21 @@ +{% extends "databrowse/base.html" %} + +{% block title %}Databrowse{% endblock %} + +{% block bodyid %}homepage{% endblock %} + +{% block content %} + +{% for model in model_list %} +
                              +

                              {{ model.verbose_name_plural|capfirst }}

                              +

                              + {% for object in model.sample_objects %} + {{ object }}, + {% endfor %} + More → +

                              +
                              +{% endfor %} + +{% endblock %} diff --git a/django/contrib/databrowse/templates/databrowse/model_detail.html b/django/contrib/databrowse/templates/databrowse/model_detail.html new file mode 100644 index 0000000000..24cd766a3d --- /dev/null +++ b/django/contrib/databrowse/templates/databrowse/model_detail.html @@ -0,0 +1,19 @@ +{% extends "databrowse/base.html" %} + +{% block title %}{{ model.verbose_name_plural|capfirst }}{% endblock %} + +{% block content %} + + + +

                              {{ model.verbose_name_plural|capfirst }}

                              + +{{ plugin_html }} + +
                                +{% for object in model.objects %} +
                              • {{ object }}
                              • +{% endfor %} +
                              + +{% endblock %} diff --git a/django/contrib/databrowse/templates/databrowse/object_detail.html b/django/contrib/databrowse/templates/databrowse/object_detail.html new file mode 100644 index 0000000000..0096178cd2 --- /dev/null +++ b/django/contrib/databrowse/templates/databrowse/object_detail.html @@ -0,0 +1,41 @@ +{% extends "databrowse/base.html" %} + +{% block title %}{{ object.model.verbose_name|capfirst }}: {{ object }}{% endblock %} + +{% block content %} + + + +

                              {{ object.model.verbose_name|capfirst }}: {{ object }}

                              + + +{% for field in object.fields %} + + + + +{% endfor %} +
                              {{ field.field.verbose_name|capfirst }} +{% if field.urls %} +{% for urlvalue in field.urls %} +{% if urlvalue.1 %}{% endif %}{{ urlvalue.0 }}{% if urlvalue.1 %}{% endif %}{% if not forloop.last %}, {% endif %} +{% endfor %} +{% else %}None{% endif %} +
                              + +{% for related_object in object.related_objects %} + + {% else %} +

                              (None)

                              + {% endif %} +{% endfor %} + +{% endblock %} diff --git a/django/contrib/databrowse/urls.py b/django/contrib/databrowse/urls.py new file mode 100644 index 0000000000..9b85d142a2 --- /dev/null +++ b/django/contrib/databrowse/urls.py @@ -0,0 +1,20 @@ +from django.conf.urls.defaults import * +from django.contrib.databrowse import views + +# Note: The views in this URLconf all require a 'models' argument, +# which is a list of model classes (*not* instances). + +urlpatterns = patterns('', + #(r'^$', views.homepage), + #(r'^([^/]+)/([^/]+)/$', views.model_detail), + + (r'^([^/]+)/([^/]+)/fields/(\w+)/$', views.choice_list), + (r'^([^/]+)/([^/]+)/fields/(\w+)/(.*)/$', views.choice_detail), + + #(r'^([^/]+)/([^/]+)/calendars/(\w+)/$', views.calendar_main), + #(r'^([^/]+)/([^/]+)/calendars/(\w+)/(\d{4})/$', views.calendar_year), + #(r'^([^/]+)/([^/]+)/calendars/(\w+)/(\d{4})/(\w{3})/$', views.calendar_month), + #(r'^([^/]+)/([^/]+)/calendars/(\w+)/(\d{4})/(\w{3})/(\d{1,2})/$', views.calendar_day), + + #(r'^([^/]+)/([^/]+)/objects/(.*)/$', views.object_detail), +) diff --git a/django/contrib/databrowse/views.py b/django/contrib/databrowse/views.py new file mode 100644 index 0000000000..d493f9dad3 --- /dev/null +++ b/django/contrib/databrowse/views.py @@ -0,0 +1,23 @@ +from django.db.models import FieldDoesNotExist, DateTimeField +from django.http import Http404 +from django.shortcuts import render_to_response +from django.contrib.databrowse.datastructures import EasyModel, EasyChoice +import datetime +import time + +########### +# CHOICES # +########### + +def choice_list(request, app_label, module_name, field_name, models): + m, f = lookup_field(app_label, module_name, field_name, models) + return render_to_response('databrowse/choice_list.html', {'model': m, 'field': f}) + +def choice_detail(request, app_label, module_name, field_name, field_val, models): + m, f = lookup_field(app_label, module_name, field_name, models) + try: + label = dict(f.field.choices)[field_val] + except KeyError: + raise Http404('Invalid choice value given') + obj_list = m.objects(**{f.field.name: field_val}) + return render_to_response('databrowse/choice_detail.html', {'model': m, 'field': f, 'value': label, 'object_list': obj_list}) diff --git a/django/contrib/localflavor/br/br_states.py b/django/contrib/localflavor/br/br_states.py index c6ce0a1bb7..98e54bca2c 100644 --- a/django/contrib/localflavor/br/br_states.py +++ b/django/contrib/localflavor/br/br_states.py @@ -1,11 +1,9 @@ # -*- coding: utf-8 -*- """ -A brazilian mapping of state misspellings/abbreviations to normalized -abbreviations, and an alphabetical list of states for use as `choices -in a formfield. +An alphabetical list of Brazilian states for use as `choices` in a formfield. -This exists in this standalone file so that it's only imported into -memory when explicitly needed. +This exists in this standalone file so that it's only imported into memory +when explicitly needed. """ STATE_CHOICES = ( diff --git a/django/contrib/localflavor/br/forms.py b/django/contrib/localflavor/br/forms.py index 29ad4df53d..3487787643 100644 --- a/django/contrib/localflavor/br/forms.py +++ b/django/contrib/localflavor/br/forms.py @@ -4,7 +4,7 @@ BR-specific Form helpers """ from django.newforms import ValidationError -from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES +from django.newforms.fields import Field, RegexField, CharField, Select, EMPTY_VALUES from django.utils.encoding import smart_unicode from django.utils.translation import gettext import re @@ -15,7 +15,7 @@ class BRZipCodeField(RegexField): def __init__(self, *args, **kwargs): super(BRZipCodeField, self).__init__(r'^\d{5}-\d{3}$', max_length=None, min_length=None, - error_message=gettext(u'Enter a zip code in the format XXXXX-XXX.'), + error_message=gettext('Enter a zip code in the format XXXXX-XXX.'), *args, **kwargs) class BRPhoneNumberField(Field): @@ -31,9 +31,89 @@ class BRPhoneNumberField(Field): class BRStateSelect(Select): """ - A Select widget that uses a list of brazilian states/territories + A Select widget that uses a list of Brazilian states/territories as its choices. """ def __init__(self, attrs=None): from br_states import STATE_CHOICES # relative import super(BRStateSelect, self).__init__(attrs, choices=STATE_CHOICES) + + +def DV_maker(v): + if v >= 2: + return 11 - v + return 0 + +class BRCPFField(CharField): + """ + This field validate a CPF number or a CPF string. A CPF number is + compounded by XXX.XXX.XXX-VD. The two last digits are check digits. + + More information: + http://en.wikipedia.org/wiki/Cadastro_de_Pessoas_F%C3%ADsicas + """ + def __init__(self, *args, **kwargs): + super(BRCPFField, self).__init__(max_length=14, min_length=11, *args, **kwargs) + + def clean(self, value): + """ + Value can be either a string in the format XXX.XXX.XXX-XX or an + 11-digit number. + """ + value = super(BRCPFField, self).clean(value) + if value in EMPTY_VALUES: + return u'' + orig_value = value[:] + if not value.isdigit(): + value = re.sub("[-\.]", "", value) + try: + int(value) + except ValueError: + raise ValidationError(gettext("This field requires only numbers.")) + if len(value) != 11: + raise ValidationError(gettext("This field requires at most 11 digits or 14 characters.")) + orig_dv = value[-2:] + + new_1dv = sum([i * int(value[idx]) for idx, i in enumerate(range(10, 1, -1))]) + new_1dv = DV_maker(new_1dv % 11) + value = value[:-2] + str(new_1dv) + value[-1] + new_2dv = sum([i * int(value[idx]) for idx, i in enumerate(range(11, 1, -1))]) + new_2dv = DV_maker(new_2dv % 11) + value = value[:-1] + str(new_2dv) + if value[-2:] != orig_dv: + raise ValidationError(gettext("Invalid CPF number.")) + + return orig_value + +class BRCNPJField(Field): + def clean(self, value): + """ + Value can be either a string in the format XX.XXX.XXX/XXXX-XX or a + group of 14 characters. + """ + value = super(BRCNPJField, self).clean(value) + if value in EMPTY_VALUES: + return u'' + orig_value = value[:] + if not value.isdigit(): + value = re.sub("[-/\.]", "", value) + try: + int(value) + except ValueError: + raise ValidationError("This field requires only numbers.") + if len(value) != 14: + raise ValidationError( + gettext("This field requires at least 14 digits")) + orig_dv = value[-2:] + + new_1dv = sum([i * int(value[idx]) for idx, i in enumerate(range(5, 1, -1) + range(9, 1, -1))]) + new_1dv = DV_maker(new_1dv % 11) + value = value[:-2] + str(new_1dv) + value[-1] + new_2dv = sum([i * int(value[idx]) for idx, i in enumerate(range(6, 1, -1) + range(9, 1, -1))]) + new_2dv = DV_maker(new_2dv % 11) + value = value[:-1] + str(new_2dv) + if value[-2:] != orig_dv: + raise ValidationError(gettext("Invalid CNPJ number.")) + + return orig_value + diff --git a/django/contrib/localflavor/ch/__init__.py b/django/contrib/localflavor/ch/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/django/contrib/localflavor/ch/ch_states.py b/django/contrib/localflavor/ch/ch_states.py new file mode 100644 index 0000000000..e9bbcc6268 --- /dev/null +++ b/django/contrib/localflavor/ch/ch_states.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -* +from django.utils.translation import gettext_lazy as _ + +STATE_CHOICES = ( + ('AG', _('Aargau')), + ('AI', _('Appenzell Innerrhoden')), + ('AR', _('Appenzell Ausserrhoden')), + ('BS', _('Basel-Stadt')), + ('BL', _('Basel-Land')), + ('BE', _('Berne')), + ('FR', _('Fribourg')), + ('GE', _('Geneva')), + ('GL', _('Glarus')), + ('GR', _('Graubuenden')), + ('JU', _('Jura')), + ('LU', _('Lucerne')), + ('NE', _('Neuchatel')), + ('NW', _('Nidwalden')), + ('OW', _('Obwalden')), + ('SH', _('Schaffhausen')), + ('SZ', _('Schwyz')), + ('SO', _('Solothurn')), + ('SG', _('St. Gallen')), + ('TG', _('Thurgau')), + ('TI', _('Ticino')), + ('UR', _('Uri')), + ('VS', _('Valais')), + ('VD', _('Vaud')), + ('ZG', _('Zug')), + ('ZH', _('Zurich')) +) diff --git a/django/contrib/localflavor/ch/forms.py b/django/contrib/localflavor/ch/forms.py new file mode 100644 index 0000000000..51e52dc0e9 --- /dev/null +++ b/django/contrib/localflavor/ch/forms.py @@ -0,0 +1,109 @@ +""" +Swiss-specific Form helpers +""" + +from django.newforms import ValidationError +from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES +from django.utils.encoding import smart_unicode +from django.utils.translation import gettext +import re + +id_re = re.compile(r"^(?P\w{8})(?P(\d{1}|<))(?P\d{1})$") +phone_digits_re = re.compile(r'^0([1-9]{1})\d{8}$') + +class CHZipCodeField(RegexField): + def __init__(self, *args, **kwargs): + super(CHZipCodeField, self).__init__(r'^\d{4}$', + max_length=None, min_length=None, + error_message=gettext('Enter a zip code in the format XXXX.'), + *args, **kwargs) + +class CHPhoneNumberField(Field): + """ + Validate local Swiss phone number (not international ones) + The correct format is '0XX XXX XX XX'. + '0XX.XXX.XX.XX' and '0XXXXXXXXX' validate but are corrected to + '0XX XXX XX XX'. + """ + def clean(self, value): + super(CHPhoneNumberField, self).clean(value) + if value in EMPTY_VALUES: + return u'' + value = re.sub('(\.|\s|/|-)', '', smart_unicode(value)) + m = phone_digits_re.search(value) + if m: + return u'%s %s %s %s' % (value[0:3], value[3:6], value[6:8], value[8:10]) + raise ValidationError('Phone numbers must be in 0XX XXX XX XX format.') + +class CHStateSelect(Select): + """ + A Select widget that uses a list of CH states as its choices. + """ + def __init__(self, attrs=None): + from ch_states import STATE_CHOICES # relative import + super(CHStateSelect, self).__init__(attrs, choices=STATE_CHOICES) + +class CHIdentityCardNumberField(Field): + """ + A Swiss identity card number. + + Checks the following rules to determine whether the number is valid: + + * Conforms to the X1234567<0 or 1234567890 format. + * Included checksums match calculated checksums + + Algorithm is documented at http://adi.kousz.ch/artikel/IDCHE.htm + """ + def has_valid_checksum(self, number): + given_number, given_checksum = number[:-1], number[-1] + new_number = given_number + calculated_checksum = 0 + fragment = "" + parameter = 7 + + first = str(number[:1]) + if first.isalpha(): + num = ord(first.upper()) - 65 + if num < 0 or num > 8: + return False + new_number = str(num) + new_number[1:] + new_number = new_number[:8] + '0' + + if not new_number.isdigit(): + return False + + for i in range(len(new_number)): + fragment = int(new_number[i])*parameter + calculated_checksum += fragment + + if parameter == 1: + parameter = 7 + elif parameter == 3: + parameter = 1 + elif parameter ==7: + parameter = 3 + + return str(calculated_checksum)[-1] == given_checksum + + def clean(self, value): + super(CHIdentityCardNumberField, self).clean(value) + error_msg = gettext('Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format.') + if value in EMPTY_VALUES: + return u'' + + match = re.match(id_re, value) + if not match: + raise ValidationError(error_msg) + + idnumber, pos9, checksum = match.groupdict()['idnumber'], match.groupdict()['pos9'], match.groupdict()['checksum'] + + if idnumber == '00000000' or \ + idnumber == 'A0000000': + raise ValidationError(error_msg) + + all_digits = "%s%s%s" % (idnumber, pos9, checksum) + if not self.has_valid_checksum(all_digits): + raise ValidationError(error_msg) + + return u'%s%s%s' % (idnumber, pos9, checksum) + diff --git a/django/contrib/localflavor/cl/__init__.py b/django/contrib/localflavor/cl/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/django/contrib/localflavor/cl/forms.py b/django/contrib/localflavor/cl/forms.py new file mode 100644 index 0000000000..87c8093407 --- /dev/null +++ b/django/contrib/localflavor/cl/forms.py @@ -0,0 +1,78 @@ +""" +Chile specific form helpers. +""" + +from django.newforms import ValidationError +from django.newforms.fields import RegexField, EMPTY_VALUES +from django.utils.translation import gettext + +class CLRutField(RegexField): + """ + Chilean "Rol Unico Tributario" (RUT) field. This is the Chilean national + identification number. + + Samples for testing are available from + https://palena.sii.cl/cvc/dte/ee_empresas_emisoras.html + """ + def __init__(self, *args, **kwargs): + if 'strict' in kwargs: + del kwargs['strict'] + super(CLRutField, self).__init__(r'^(\d{1,2}\.)?\d{3}\.\d{3}-[\dkK]$', + error_message=gettext('Enter valid a Chilean RUT. The format is XX.XXX.XXX-X.'), + *args, **kwargs) + else: + # In non-strict mode, accept RUTs that validate but do not exist in + # the real world. + super(CLRutField, self).__init__(r'^[\d\.]{1,11}-?[\dkK]$', error_message=gettext(u'Enter valid a Chilean RUT'), *args, **kwargs) + + def clean(self, value): + """ + Check and clean the Chilean RUT. + """ + super(CLRutField, self).clean(value) + if value in EMPTY_VALUES: + return u'' + rut, verificador = self._canonify(value) + if self._algorithm(rut) == verificador: + return self._format(rut, verificador) + else: + raise ValidationError(u'The Chilean RUT is not valid.') + + def _algorithm(self, rut): + """ + Takes RUT in pure canonical form, calculates the verifier digit. + """ + suma = 0 + multi = 2 + for r in rut[::-1]: + suma += int(r) * multi + multi += 1 + if multi == 8: + multi = 2 + return '0123456789K0'[11 - suma % 11] + + def _canonify(self, rut): + """ + Turns the RUT into one normalized format. Returns a (rut, verifier) + tuple. + """ + rut = str(rut).replace(' ', '').replace('.', '').replace('-', '') + return rut[:-1], rut[-1] + + def _format(self, code, verifier=None): + """ + Formats the RUT from canonical form to the common string representation. + If verifier=None, then the last digit in 'code' is the verifier. + """ + if verifier is None: + verifier = code[-1] + code = code[:-1] + while len(code) > 3 and '.' not in code[:3]: + pos = code.find('.') + if pos == -1: + new_dot = -3 + else: + new_dot = pos - 3 + code = code[:new_dot] + '.' + code[new_dot:] + return '%s-%s' % (code, verifier) + diff --git a/django/contrib/localflavor/fi/forms.py b/django/contrib/localflavor/fi/forms.py index a2b2eed5c2..da5cb5f2a8 100644 --- a/django/contrib/localflavor/fi/forms.py +++ b/django/contrib/localflavor/fi/forms.py @@ -26,8 +26,8 @@ class FISocialSecurityNumber(Field): def clean(self, value): super(FISocialSecurityNumber, self).clean(value) if value in EMPTY_VALUES: - return u'' - + return u'' + checkmarks = "0123456789ABCDEFHJKLMNPRSTUVWXY" result = re.match(r"""^ (?P([0-2]\d|3[01]) @@ -35,13 +35,11 @@ class FISocialSecurityNumber(Field): (\d{2})) [A+-] (?P(\d{3})) - (?P[%s])$""" % checkmarks, value, re.VERBOSE | re.IGNORECASE) + (?P[%s])$""" % checkmarks, value, re.VERBOSE | re.IGNORECASE) if not result: raise ValidationError(gettext(u'Enter a valid Finnish social security number.')) - checksum = int(result.groupdict()['date'] + result.groupdict()['serial']) - - if checkmarks[checksum % len(checkmarks)] == result.groupdict()['chechsum'].upper(): + gd = result.groupdict() + checksum = int(gd['date'] + gd['serial']) + if checkmarks[checksum % len(checkmarks)] == gd['checksum'].upper(): return u'%s' % value.upper() - raise ValidationError(gettext(u'Enter a valid Finnish social security number.')) - diff --git a/django/contrib/localflavor/is_/__init__.py b/django/contrib/localflavor/is_/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/django/contrib/localflavor/is_/forms.py b/django/contrib/localflavor/is_/forms.py new file mode 100644 index 0000000000..d052acf579 --- /dev/null +++ b/django/contrib/localflavor/is_/forms.py @@ -0,0 +1,77 @@ +""" +Iceland specific form helpers. +""" + +from django.newforms import ValidationError +from django.newforms.fields import RegexField, EMPTY_VALUES +from django.newforms.widgets import Select +from django.utils.translation import gettext + +class ISIdNumberField(RegexField): + """ + Icelandic identification number (kennitala). This is a number every citizen + of Iceland has. + """ + def __init__(self, *args, **kwargs): + error_msg = gettext(u'Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.') + kwargs['min_length'],kwargs['max_length'] = 10,11 + super(ISIdNumberField, self).__init__(r'^\d{6}(-| )?\d{4}$', error_message=error_msg, *args, **kwargs) + + def clean(self, value): + value = super(ISIdNumberField, self).clean(value) + + if value in EMPTY_VALUES: + return u'' + + value = self._canonify(value) + if self._validate(value): + return self._format(value) + else: + raise ValidationError(gettext(u'The Icelandic identification number is not valid.')) + + def _canonify(self, value): + """ + Returns the value as only digits. + """ + return value.replace('-', '').replace(' ', '') + + def _validate(self, value): + """ + Takes in the value in canonical form and checks the verifier digit. The + method is modulo 11. + """ + check = [3, 2, 7, 6, 5, 4, 3, 2, 1, 0] + return sum(int(value[i]) * check[i] for i in range(10)) % 11 == 0 + + def _format(self, value): + """ + Takes in the value in canonical form and returns it in the common + display format. + """ + return value[:6]+'-'+value[6:] + +class ISPhoneNumberField(RegexField): + """ + Icelandic phone number. Seven digits with an optional hyphen or space after + the first three digits. + """ + def __init__(self, *args, **kwargs): + kwargs['min_length'], kwargs['max_length'] = 7,8 + super(ISPhoneNumberField, self).__init__(r'^\d{3}(-| )?\d{4}$', *args, **kwargs) + + def clean(self, value): + value = super(ISPhoneNumberField, self).clean(value) + + if value in EMPTY_VALUES: + return u'' + + return value.replace('-', '').replace(' ', '') + +class ISPostalCodeSelect(Select): + """ + A Select widget that uses a list of Icelandic postal codes as its choices. + """ + def __init__(self, attrs=None): + from is_postalcodes import IS_POSTALCODES + super(ISPostalCodeSelect, self).__init__(attrs, choices=IS_POSTALCODES) + diff --git a/django/contrib/localflavor/is_/is_postalcodes.py b/django/contrib/localflavor/is_/is_postalcodes.py new file mode 100644 index 0000000000..4feca9c013 --- /dev/null +++ b/django/contrib/localflavor/is_/is_postalcodes.py @@ -0,0 +1,151 @@ +# -*- coding: utf-8 -*- + +IS_POSTALCODES = ( + ('101', u'101 Reykjavík'), + ('103', u'103 Reykjavík'), + ('104', u'104 Reykjavík'), + ('105', u'105 Reykjavík'), + ('107', u'107 Reykjavík'), + ('108', u'108 Reykjavík'), + ('109', u'109 Reykjavík'), + ('110', u'110 Reykjavík'), + ('111', u'111 Reykjavík'), + ('112', u'112 Reykjavík'), + ('113', u'113 Reykjavík'), + ('116', u'116 Kjalarnes'), + ('121', u'121 Reykjavík'), + ('123', u'123 Reykjavík'), + ('124', u'124 Reykjavík'), + ('125', u'125 Reykjavík'), + ('127', u'127 Reykjavík'), + ('128', u'128 Reykjavík'), + ('129', u'129 Reykjavík'), + ('130', u'130 Reykjavík'), + ('132', u'132 Reykjavík'), + ('150', u'150 Reykjavík'), + ('155', u'155 Reykjavík'), + ('170', u'170 Seltjarnarnes'), + ('172', u'172 Seltjarnarnes'), + ('190', u'190 Vogar'), + ('200', u'200 Kópavogur'), + ('201', u'201 Kópavogur'), + ('202', u'202 Kópavogur'), + ('203', u'203 Kópavogur'), + ('210', u'210 Garðabær'), + ('212', u'212 Garðabær'), + ('220', u'220 Hafnarfjörður'), + ('221', u'221 Hafnarfjörður'), + ('222', u'222 Hafnarfjörður'), + ('225', u'225 Álftanes'), + ('230', u'230 Reykjanesbær'), + ('232', u'232 Reykjanesbær'), + ('233', u'233 Reykjanesbær'), + ('235', u'235 Keflavíkurflugvöllur'), + ('240', u'240 Grindavík'), + ('245', u'245 Sandgerði'), + ('250', u'250 Garður'), + ('260', u'260 Reykjanesbær'), + ('270', u'270 Mosfellsbær'), + ('300', u'300 Akranes'), + ('301', u'301 Akranes'), + ('302', u'302 Akranes'), + ('310', u'310 Borgarnes'), + ('311', u'311 Borgarnes'), + ('320', u'320 Reykholt í Borgarfirði'), + ('340', u'340 Stykkishólmur'), + ('345', u'345 Flatey á Breiðafirði'), + ('350', u'350 Grundarfjörður'), + ('355', u'355 Ólafsvík'), + ('356', u'356 Snæfellsbær'), + ('360', u'360 Hellissandur'), + ('370', u'370 Búðardalur'), + ('371', u'371 Búðardalur'), + ('380', u'380 Reykhólahreppur'), + ('400', u'400 Ísafjörður'), + ('401', u'401 Ísafjörður'), + ('410', u'410 Hnífsdalur'), + ('415', u'415 Bolungarvík'), + ('420', u'420 Súðavík'), + ('425', u'425 Flateyri'), + ('430', u'430 Suðureyri'), + ('450', u'450 Patreksfjörður'), + ('451', u'451 Patreksfjörður'), + ('460', u'460 Tálknafjörður'), + ('465', u'465 Bíldudalur'), + ('470', u'470 Þingeyri'), + ('471', u'471 Þingeyri'), + ('500', u'500 Staður'), + ('510', u'510 Hólmavík'), + ('512', u'512 Hólmavík'), + ('520', u'520 Drangsnes'), + ('522', u'522 Kjörvogur'), + ('523', u'523 Bær'), + ('524', u'524 Norðurfjörður'), + ('530', u'530 Hvammstangi'), + ('531', u'531 Hvammstangi'), + ('540', u'540 Blönduós'), + ('541', u'541 Blönduós'), + ('545', u'545 Skagaströnd'), + ('550', u'550 Sauðárkrókur'), + ('551', u'551 Sauðárkrókur'), + ('560', u'560 Varmahlíð'), + ('565', u'565 Hofsós'), + ('566', u'566 Hofsós'), + ('570', u'570 Fljót'), + ('580', u'580 Siglufjörður'), + ('600', u'600 Akureyri'), + ('601', u'601 Akureyri'), + ('602', u'602 Akureyri'), + ('603', u'603 Akureyri'), + ('610', u'610 Grenivík'), + ('611', u'611 Grímsey'), + ('620', u'620 Dalvík'), + ('621', u'621 Dalvík'), + ('625', u'625 Ólafsfjörður'), + ('630', u'630 Hrísey'), + ('640', u'640 Húsavík'), + ('641', u'641 Húsavík'), + ('645', u'645 Fosshóll'), + ('650', u'650 Laugar'), + ('660', u'660 Mývatn'), + ('670', u'670 Kópasker'), + ('671', u'671 Kópasker'), + ('675', u'675 Raufarhöfn'), + ('680', u'680 Þórshöfn'), + ('681', u'681 Þórshöfn'), + ('685', u'685 Bakkafjörður'), + ('690', u'690 Vopnafjörður'), + ('700', u'700 Egilsstaðir'), + ('701', u'701 Egilsstaðir'), + ('710', u'710 Seyðisfjörður'), + ('715', u'715 Mjóifjörður'), + ('720', u'720 Borgarfjörður eystri'), + ('730', u'730 Reyðarfjörður'), + ('735', u'735 Eskifjörður'), + ('740', u'740 Neskaupstaður'), + ('750', u'750 Fáskrúðsfjörður'), + ('755', u'755 Stöðvarfjörður'), + ('760', u'760 Breiðdalsvík'), + ('765', u'765 Djúpivogur'), + ('780', u'780 Höfn í Hornafirði'), + ('781', u'781 Höfn í Hornafirði'), + ('785', u'785 Öræfi'), + ('800', u'800 Selfoss'), + ('801', u'801 Selfoss'), + ('802', u'802 Selfoss'), + ('810', u'810 Hveragerði'), + ('815', u'815 Þorlákshöfn'), + ('820', u'820 Eyrarbakki'), + ('825', u'825 Stokkseyri'), + ('840', u'840 Laugarvatn'), + ('845', u'845 Flúðir'), + ('850', u'850 Hella'), + ('851', u'851 Hella'), + ('860', u'860 Hvolsvöllur'), + ('861', u'861 Hvolsvöllur'), + ('870', u'870 Vík'), + ('871', u'871 Vík'), + ('880', u'880 Kirkjubæjarklaustur'), + ('900', u'900 Vestmannaeyjar'), + ('902', u'902 Vestmannaeyjar') +) diff --git a/django/contrib/localflavor/it/forms.py b/django/contrib/localflavor/it/forms.py index 8e9d8bc11d..bb1bb2e6a4 100644 --- a/django/contrib/localflavor/it/forms.py +++ b/django/contrib/localflavor/it/forms.py @@ -5,13 +5,15 @@ IT-specific Form helpers from django.newforms import ValidationError from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES from django.utils.translation import gettext +from django.utils.encoding import smart_unicode +from django.contrib.localflavor.it.util import ssn_check_digit, vat_number_check_digit import re class ITZipCodeField(RegexField): def __init__(self, *args, **kwargs): super(ITZipCodeField, self).__init__(r'^\d{5}$', max_length=None, min_length=None, - error_message=gettext(u'Enter a zip code in the format XXXXX.'), + error_message=gettext(u'Enter a valid zip code.'), *args, **kwargs) class ITRegionSelect(Select): @@ -29,3 +31,47 @@ class ITProvinceSelect(Select): def __init__(self, attrs=None): from it_province import PROVINCE_CHOICES # relative import super(ITProvinceSelect, self).__init__(attrs, choices=PROVINCE_CHOICES) + +class ITSocialSecurityNumberField(RegexField): + """ + A form field that validates Italian Social Security numbers (codice fiscale). + For reference see http://www.agenziaentrate.it/ and search for + 'Informazioni sulla codificazione delle persone fisiche'. + """ + err_msg = gettext(u'Enter a valid Social Security number.') + def __init__(self, *args, **kwargs): + super(ITSocialSecurityNumberField, self).__init__(r'^\w{3}\s*\w{3}\s*\w{5}\s*\w{5}$', + max_length=None, min_length=None, error_message=self.err_msg, + *args, **kwargs) + + def clean(self, value): + value = super(ITSocialSecurityNumberField, self).clean(value) + if value == u'': + return value + value = re.sub('\s', u'', value).upper() + try: + check_digit = ssn_check_digit(value) + except ValueError: + raise ValidationError(self.err_msg) + if not value[15] == check_digit: + raise ValidationError(self.err_msg) + return value + +class ITVatNumberField(Field): + """ + A form field that validates Italian VAT numbers (partita IVA). + """ + def clean(self, value): + value = super(ITVatNumberField, self).clean(value) + if value == u'': + return value + err_msg = gettext(u'Enter a valid VAT number.') + try: + vat_number = int(value) + except ValueError: + raise ValidationError(err_msg) + vat_number = str(vat_number).zfill(11) + check_digit = vat_number_check_digit(vat_number[0:10]) + if not vat_number[10] == check_digit: + raise ValidationError(err_msg) + return smart_unicode(vat_number) diff --git a/django/contrib/localflavor/it/util.py b/django/contrib/localflavor/it/util.py new file mode 100644 index 0000000000..49b607f160 --- /dev/null +++ b/django/contrib/localflavor/it/util.py @@ -0,0 +1,40 @@ +def ssn_check_digit(value): + "Calculate Italian social security number check digit." + ssn_even_chars = { + '0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, + 'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7, 'I': 8, 'J': 9, + 'K': 10, 'L': 11, 'M': 12, 'N': 13, 'O': 14, 'P': 15, 'Q': 16, 'R': 17, 'S': 18, + 'T': 19, 'U': 20, 'V': 21, 'W': 22, 'X': 23, 'Y': 24, 'Z': 25 + } + ssn_odd_chars = { + '0': 1, '1': 0, '2': 5, '3': 7, '4': 9, '5': 13, '6': 15, '7': 17, '8': 19, '9': 21, + 'A': 1, 'B': 0, 'C': 5, 'D': 7, 'E': 9, 'F': 13, 'G': 15, 'H': 17, 'I': 19, 'J': 21, + 'K': 2, 'L': 4, 'M': 18, 'N': 20, 'O': 11, 'P': 3, 'Q': 6, 'R': 8, 'S': 12, + 'T': 14, 'U': 16, 'V': 10, 'W': 22, 'X': 25, 'Y': 24, 'Z': 23 + } + # Chars from 'A' to 'Z' + ssn_check_digits = [chr(x) for x in range(65, 91)] + + ssn = value.upper() + total = 0 + for i in range(0,15): + try: + if i % 2 == 0: + total += ssn_odd_chars[ssn[i]] + else: + total += ssn_even_chars[ssn[i]] + except KeyError: + msg = "Character '%(char)s' is not allowed." % {'char': ssn[i]} + raise ValueError(msg) + return ssn_check_digits[total % 26] + +def vat_number_check_digit(vat_number): + "Calculate Italian VAT number check digit." + normalized_vat_number = str(vat_number).zfill(10) + total = 0 + for i in range(0, 10, 2): + total += int(normalized_vat_number[i]) + for i in range(1, 11, 2): + quotient , remainder = divmod(int(normalized_vat_number[i]) * 2, 10) + total += quotient + remainder + return str((10 - total % 10) % 10) diff --git a/django/contrib/localflavor/us/us_states.py b/django/contrib/localflavor/us/us_states.py index 89124a4b69..c84facc219 100644 --- a/django/contrib/localflavor/us/us_states.py +++ b/django/contrib/localflavor/us/us_states.py @@ -15,7 +15,7 @@ STATE_CHOICES = ( ('CA', 'California'), ('CO', 'Colorado'), ('CT', 'Connecticut'), - ('DE', 'Deleware'), + ('DE', 'Delaware'), ('DC', 'District of Columbia'), ('FM', 'Federated States of Micronesia'), ('FL', 'Florida'), @@ -97,6 +97,7 @@ STATES_NORMALIZED = { 'de': 'DE', 'del': 'DE', 'delaware': 'DE', + 'deleware': 'DE', 'district of columbia': 'DC', 'federated states of micronesia': 'FM', 'fl': 'FL', diff --git a/django/contrib/sitemaps/views.py b/django/contrib/sitemaps/views.py index 576e3d0bb8..d615c8e661 100644 --- a/django/contrib/sitemaps/views.py +++ b/django/contrib/sitemaps/views.py @@ -16,7 +16,7 @@ def index(request, sitemaps): def sitemap(request, sitemaps, section=None): maps, urls = [], [] if section is not None: - if not sitemaps.has_key(section): + if section not in sitemaps: raise Http404("No sitemap available for section: %r" % section) maps.append(sitemaps[section]) else: diff --git a/django/contrib/syndication/feeds.py b/django/contrib/syndication/feeds.py index cdb4e8170f..af00bdc3e9 100644 --- a/django/contrib/syndication/feeds.py +++ b/django/contrib/syndication/feeds.py @@ -70,6 +70,7 @@ class Feed(object): feed = self.feed_type( title = self.__get_dynamic_attr('title', obj), + subtitle = self.__get_dynamic_attr('subtitle', obj), link = link, description = self.__get_dynamic_attr('description', obj), language = settings.LANGUAGE_CODE.decode(), diff --git a/django/contrib/webdesign/lorem_ipsum.py b/django/contrib/webdesign/lorem_ipsum.py index b5a3d3b5db..6226bbef1b 100644 --- a/django/contrib/webdesign/lorem_ipsum.py +++ b/django/contrib/webdesign/lorem_ipsum.py @@ -1,66 +1,69 @@ -""" -Utility functions for generating "lorem ipsum" Latin text. -""" - -import random - -COMMON_P = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.' -WORDS = ('exercitationem', 'perferendis', 'perspiciatis', 'laborum', 'eveniet', 'sunt', 'iure', 'nam', 'nobis', 'eum', 'cum', 'officiis', 'excepturi', 'odio', 'consectetur', 'quasi', 'aut', 'quisquam', 'vel', 'eligendi', 'itaque', 'non', 'odit', 'tempore', 'quaerat', 'dignissimos', 'facilis', 'neque', 'nihil', 'expedita', 'vitae', 'vero', 'ipsum', 'nisi', 'animi', 'cumque', 'pariatur', 'velit', 'modi', 'natus', 'iusto', 'eaque', 'sequi', 'illo', 'sed', 'ex', 'et', 'voluptatibus', 'tempora', 'veritatis', 'ratione', 'assumenda', 'incidunt', 'nostrum', 'placeat', 'aliquid', 'fuga', 'provident', 'praesentium', 'rem', 'necessitatibus', 'suscipit', 'adipisci', 'quidem', 'possimus', 'voluptas', 'debitis', 'sint', 'accusantium', 'unde', 'sapiente', 'voluptate', 'qui', 'aspernatur', 'laudantium', 'soluta', 'amet', 'quo', 'aliquam', 'saepe', 'culpa', 'libero', 'ipsa', 'dicta', 'reiciendis', 'nesciunt', 'doloribus', 'autem', 'impedit', 'minima', 'maiores', 'repudiandae', 'ipsam', 'obcaecati', 'ullam', 'enim', 'totam', 'delectus', 'ducimus', 'quis', 'voluptates', 'dolores', 'molestiae', 'harum', 'dolorem', 'quia', 'voluptatem', 'molestias', 'magni', 'distinctio', 'omnis', 'illum', 'dolorum', 'voluptatum', 'ea', 'quas', 'quam', 'corporis', 'quae', 'blanditiis', 'atque', 'deserunt', 'laboriosam', 'earum', 'consequuntur', 'hic', 'cupiditate', 'quibusdam', 'accusamus', 'ut', 'rerum', 'error', 'minus', 'eius', 'ab', 'ad', 'nemo', 'fugit', 'officia', 'at', 'in', 'id', 'quos', 'reprehenderit', 'numquam', 'iste', 'fugiat', 'sit', 'inventore', 'beatae', 'repellendus', 'magnam', 'recusandae', 'quod', 'explicabo', 'doloremque', 'aperiam', 'consequatur', 'asperiores', 'commodi', 'optio', 'dolor', 'labore', 'temporibus', 'repellat', 'veniam', 'architecto', 'est', 'esse', 'mollitia', 'nulla', 'a', 'similique', 'eos', 'alias', 'dolore', 'tenetur', 'deleniti', 'porro', 'facere', 'maxime', 'corrupti') -COMMON_WORDS = ('lorem', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur', 'adipisicing', 'elit', 'sed', 'do', 'eiusmod', 'tempor', 'incididunt', 'ut', 'labore', 'et', 'dolore', 'magna', 'aliqua') - -def sentence(): - """ - Returns a randomly generated sentence of lorem ipsum text. - - The first word is capitalized, and the sentence ends in either a period or - question mark. Commas are added at random. - """ - # Determine the number of comma-separated sections and number of words in - # each section for this sentence. - sections = [' '.join(random.sample(WORDS, random.randint(3, 12))) for i in range(random.randint(1, 5))] - s = ', '.join(sections) - # Convert to sentence case and add end punctuation. - return '%s%s%s' % (s[0].upper(), s[1:], random.choice('?.')) - -def paragraph(): - """ - Returns a randomly generated paragraph of lorem ipsum text. - - The paragraph consists of between 1 and 4 sentences, inclusive. - """ - return ' '.join([sentence() for i in range(random.randint(1, 4))]) - -def paragraphs(count, common=True): - """ - Returns a list of paragraphs as returned by paragraph(). - - If `common` is True, then the first paragraph will be the standard - 'lorem ipsum' paragraph. Otherwise, the first paragraph will be random - Latin text. Either way, subsequent paragraphs will be random Latin text. - """ - paras = [] - for i in range(count): - if common and i == 0: - paras.append(COMMON_P) - else: - paras.append(paragraph()) - return paras - -def words(count, common=True): - """ - Returns a string of `count` lorem ipsum words separated by a single space. - - If `common` is True, then the first 19 words will be the standard - 'lorem ipsum' words. Otherwise, all words will be selected randomly. - """ - if common: - word_list = list(COMMON_WORDS) - else: - word_list = [] - c = len(word_list) - if count > c: - count = min(count - c, len(WORDS)) - word_list += random.sample(WORDS, count - c) - else: - word_list = word_list[:count] - return ' '.join(word_list) +""" +Utility functions for generating "lorem ipsum" Latin text. +""" + +import random + +COMMON_P = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.' +WORDS = ('exercitationem', 'perferendis', 'perspiciatis', 'laborum', 'eveniet', 'sunt', 'iure', 'nam', 'nobis', 'eum', 'cum', 'officiis', 'excepturi', 'odio', 'consectetur', 'quasi', 'aut', 'quisquam', 'vel', 'eligendi', 'itaque', 'non', 'odit', 'tempore', 'quaerat', 'dignissimos', 'facilis', 'neque', 'nihil', 'expedita', 'vitae', 'vero', 'ipsum', 'nisi', 'animi', 'cumque', 'pariatur', 'velit', 'modi', 'natus', 'iusto', 'eaque', 'sequi', 'illo', 'sed', 'ex', 'et', 'voluptatibus', 'tempora', 'veritatis', 'ratione', 'assumenda', 'incidunt', 'nostrum', 'placeat', 'aliquid', 'fuga', 'provident', 'praesentium', 'rem', 'necessitatibus', 'suscipit', 'adipisci', 'quidem', 'possimus', 'voluptas', 'debitis', 'sint', 'accusantium', 'unde', 'sapiente', 'voluptate', 'qui', 'aspernatur', 'laudantium', 'soluta', 'amet', 'quo', 'aliquam', 'saepe', 'culpa', 'libero', 'ipsa', 'dicta', 'reiciendis', 'nesciunt', 'doloribus', 'autem', 'impedit', 'minima', 'maiores', 'repudiandae', 'ipsam', 'obcaecati', 'ullam', 'enim', 'totam', 'delectus', 'ducimus', 'quis', 'voluptates', 'dolores', 'molestiae', 'harum', 'dolorem', 'quia', 'voluptatem', 'molestias', 'magni', 'distinctio', 'omnis', 'illum', 'dolorum', 'voluptatum', 'ea', 'quas', 'quam', 'corporis', 'quae', 'blanditiis', 'atque', 'deserunt', 'laboriosam', 'earum', 'consequuntur', 'hic', 'cupiditate', 'quibusdam', 'accusamus', 'ut', 'rerum', 'error', 'minus', 'eius', 'ab', 'ad', 'nemo', 'fugit', 'officia', 'at', 'in', 'id', 'quos', 'reprehenderit', 'numquam', 'iste', 'fugiat', 'sit', 'inventore', 'beatae', 'repellendus', 'magnam', 'recusandae', 'quod', 'explicabo', 'doloremque', 'aperiam', 'consequatur', 'asperiores', 'commodi', 'optio', 'dolor', 'labore', 'temporibus', 'repellat', 'veniam', 'architecto', 'est', 'esse', 'mollitia', 'nulla', 'a', 'similique', 'eos', 'alias', 'dolore', 'tenetur', 'deleniti', 'porro', 'facere', 'maxime', 'corrupti') +COMMON_WORDS = ('lorem', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur', 'adipisicing', 'elit', 'sed', 'do', 'eiusmod', 'tempor', 'incididunt', 'ut', 'labore', 'et', 'dolore', 'magna', 'aliqua') + +def sentence(): + """ + Returns a randomly generated sentence of lorem ipsum text. + + The first word is capitalized, and the sentence ends in either a period or + question mark. Commas are added at random. + """ + # Determine the number of comma-separated sections and number of words in + # each section for this sentence. + sections = [' '.join(random.sample(WORDS, random.randint(3, 12))) for i in range(random.randint(1, 5))] + s = ', '.join(sections) + # Convert to sentence case and add end punctuation. + return '%s%s%s' % (s[0].upper(), s[1:], random.choice('?.')) + +def paragraph(): + """ + Returns a randomly generated paragraph of lorem ipsum text. + + The paragraph consists of between 1 and 4 sentences, inclusive. + """ + return ' '.join([sentence() for i in range(random.randint(1, 4))]) + +def paragraphs(count, common=True): + """ + Returns a list of paragraphs as returned by paragraph(). + + If `common` is True, then the first paragraph will be the standard + 'lorem ipsum' paragraph. Otherwise, the first paragraph will be random + Latin text. Either way, subsequent paragraphs will be random Latin text. + """ + paras = [] + for i in range(count): + if common and i == 0: + paras.append(COMMON_P) + else: + paras.append(paragraph()) + return paras + +def words(count, common=True): + """ + Returns a string of `count` lorem ipsum words separated by a single space. + + If `common` is True, then the first 19 words will be the standard + 'lorem ipsum' words. Otherwise, all words will be selected randomly. + """ + if common: + word_list = list(COMMON_WORDS) + else: + word_list = [] + c = len(word_list) + if count > c: + count -= c + while count > 0: + c = min(count, len(WORDS)) + count -= c + word_list += random.sample(WORDS, c) + else: + word_list = word_list[:count] + return ' '.join(word_list) diff --git a/django/core/cache/backends/base.py b/django/core/cache/backends/base.py index ef5f6a6b3e..bb67399f3b 100644 --- a/django/core/cache/backends/base.py +++ b/django/core/cache/backends/base.py @@ -54,3 +54,6 @@ class BaseCache(object): Returns True if the key is in the cache and has not expired. """ return self.get(key) is not None + + __contains__ = has_key + diff --git a/django/core/cache/backends/simple.py b/django/core/cache/backends/simple.py index 175944a75a..3fcad8c7ad 100644 --- a/django/core/cache/backends/simple.py +++ b/django/core/cache/backends/simple.py @@ -52,7 +52,7 @@ class CacheClass(BaseCache): pass def has_key(self, key): - return self._cache.has_key(key) + return key in self._cache def _cull(self): if self._cull_frequency == 0: diff --git a/django/core/handlers/modpython.py b/django/core/handlers/modpython.py index 5fc41a048b..6370cab47c 100644 --- a/django/core/handlers/modpython.py +++ b/django/core/handlers/modpython.py @@ -42,11 +42,11 @@ class ModPythonRequest(http.HttpRequest): def is_secure(self): # Note: modpython 3.2.10+ has req.is_https(), but we need to support previous versions - return self._req.subprocess_env.has_key('HTTPS') and self._req.subprocess_env['HTTPS'] == 'on' + return 'HTTPS' in self._req.subprocess_env and self._req.subprocess_env['HTTPS'] == 'on' def _load_post_and_files(self): "Populates self._post and self._files" - if self._req.headers_in.has_key('content-type') and self._req.headers_in['content-type'].startswith('multipart'): + if 'content-type' in self._req.headers_in and self._req.headers_in['content-type'].startswith('multipart'): self._post, self._files = http.parse_file_upload(self._req.headers_in, self.raw_post_data) else: self._post, self._files = http.QueryDict(self.raw_post_data), datastructures.MultiValueDict() diff --git a/django/core/handlers/wsgi.py b/django/core/handlers/wsgi.py index 71cfecd9a0..4320b69627 100644 --- a/django/core/handlers/wsgi.py +++ b/django/core/handlers/wsgi.py @@ -103,7 +103,7 @@ class WSGIRequest(http.HttpRequest): return '%s%s' % (self.path, self.environ.get('QUERY_STRING', '') and ('?' + self.environ.get('QUERY_STRING', '')) or '') def is_secure(self): - return self.environ.has_key('HTTPS') and self.environ['HTTPS'] == 'on' + return 'HTTPS' in self.environ and self.environ['HTTPS'] == 'on' def _load_post_and_files(self): # Populates self._post and self._files diff --git a/django/core/mail.py b/django/core/mail.py index b9966c2af0..8661d84287 100644 --- a/django/core/mail.py +++ b/django/core/mail.py @@ -1,14 +1,22 @@ -# Use this module for e-mailing. +""" +Tools for sending email. +""" from django.conf import settings from email.MIMEText import MIMEText from email.Header import Header from email.Utils import formatdate +from email import Charset +import os import smtplib import socket import time import random +# Don't BASE64-encode UTF-8 messages so that we avoid unwanted attention from +# some spam filters. +Charset.add_charset('utf-8', Charset.SHORTEST, Charset.QP, 'utf-8') + # Cache the hostname, but do it lazily: socket.getfqdn() can take a couple of # seconds, which slows down the restart of the server. class CachedDnsName(object): @@ -22,6 +30,28 @@ class CachedDnsName(object): DNS_NAME = CachedDnsName() +# Copied from Python standard library and modified to used the cached hostname +# for performance. +def make_msgid(idstring=None): + """Returns a string suitable for RFC 2822 compliant Message-ID, e.g: + + <20020201195627.33539.96671@nightshade.la.mastaler.com> + + Optional idstring if given is a string used to strengthen the + uniqueness of the message id. + """ + timeval = time.time() + utcdate = time.strftime('%Y%m%d%H%M%S', time.gmtime(timeval)) + pid = os.getpid() + randint = random.randrange(100000) + if idstring is None: + idstring = '' + else: + idstring = '.' + idstring + idhost = DNS_NAME + msgid = '<%s.%s.%s%s@%s>' % (utcdate, pid, randint, idstring, idhost) + return msgid + class BadHeaderError(ValueError): pass @@ -34,6 +64,131 @@ class SafeMIMEText(MIMEText): val = Header(val, settings.DEFAULT_CHARSET) MIMEText.__setitem__(self, name, val) +class SMTPConnection(object): + """ + A wrapper that manages the SMTP network connection. + """ + + def __init__(self, host=None, port=None, username=None, password=None, + use_tls=None, fail_silently=False): + self.host = host or settings.EMAIL_HOST + self.port = port or settings.EMAIL_PORT + self.username = username or settings.EMAIL_HOST_USER + self.password = password or settings.EMAIL_HOST_PASSWORD + self.use_tls = (use_tls is not None) and use_tls or settings.EMAIL_USE_TLS + self.fail_silently = fail_silently + self.connection = None + + def open(self): + """ + Ensure we have a connection to the email server. Returns whether or not + a new connection was required. + """ + if self.connection: + # Nothing to do if the connection is already open. + return False + try: + self.connection = smtplib.SMTP(self.host, self.port) + if self.use_tls: + self.connection.ehlo() + self.connection.starttls() + self.connection.ehlo() + if self.username and self.password: + self.connection.login(self.username, self.password) + return True + except: + if not self.fail_silently: + raise + + def close(self): + """Close the connection to the email server.""" + try: + try: + self.connection.quit() + except socket.sslerror: + # This happens when calling quit() on a TLS connection + # sometimes. + self.connection.close() + except: + if self.fail_silently: + return + raise + finally: + self.connection = None + + def send_messages(self, email_messages): + """ + Send one or more EmailMessage objects and return the number of email + messages sent. + """ + if not email_messages: + return + new_conn_created = self.open() + if not self.connection: + # We failed silently on open(). Trying to send would be pointless. + return + num_sent = 0 + for message in email_messages: + sent = self._send(message) + if sent: + num_sent += 1 + if new_conn_created: + self.close() + return num_sent + + def _send(self, email_message): + """A helper method that does the actual sending.""" + if not email_message.to: + return False + try: + self.connection.sendmail(email_message.from_email, + email_message.recipients(), + email_message.message().as_string()) + except: + if not self.fail_silently: + raise + return False + return True + +class EmailMessage(object): + """ + A container for email information. + """ + def __init__(self, subject='', body='', from_email=None, to=None, bcc=None, connection=None): + self.to = to or [] + self.bcc = bcc or [] + self.from_email = from_email or settings.DEFAULT_FROM_EMAIL + self.subject = subject + self.body = body + self.connection = connection + + def get_connection(self, fail_silently=False): + if not self.connection: + self.connection = SMTPConnection(fail_silently=fail_silently) + return self.connection + + def message(self): + msg = SafeMIMEText(self.body, 'plain', settings.DEFAULT_CHARSET) + msg['Subject'] = self.subject + msg['From'] = self.from_email + msg['To'] = ', '.join(self.to) + msg['Date'] = formatdate() + msg['Message-ID'] = make_msgid() + if self.bcc: + msg['Bcc'] = ', '.join(self.bcc) + return msg + + def recipients(self): + """ + Returns a list of all recipients of the email (includes direct + addressees as well as Bcc entries). + """ + return self.to + self.bcc + + def send(self, fail_silently=False): + """Send the email message.""" + return self.get_connection(fail_silently).send_messages([self]) + def send_mail(subject, message, from_email, recipient_list, fail_silently=False, auth_user=None, auth_password=None): """ Easy wrapper for sending a single message to a recipient list. All members @@ -41,12 +196,13 @@ def send_mail(subject, message, from_email, recipient_list, fail_silently=False, If auth_user is None, the EMAIL_HOST_USER setting is used. If auth_password is None, the EMAIL_HOST_PASSWORD setting is used. + + NOTE: This method is deprecated. It exists for backwards compatibility. + New code should use the EmailMessage class directly. """ - if auth_user is None: - auth_user = settings.EMAIL_HOST_USER - if auth_password is None: - auth_password = settings.EMAIL_HOST_PASSWORD - return send_mass_mail([[subject, message, from_email, recipient_list]], fail_silently, auth_user, auth_password) + connection = SMTPConnection(username=auth_user, password=auth_password, + fail_silently=fail_silently) + return EmailMessage(subject, message, from_email, recipient_list, connection=connection).send() def send_mass_mail(datatuple, fail_silently=False, auth_user=None, auth_password=None): """ @@ -57,52 +213,24 @@ def send_mass_mail(datatuple, fail_silently=False, auth_user=None, auth_password If auth_user and auth_password are set, they're used to log in. If auth_user is None, the EMAIL_HOST_USER setting is used. If auth_password is None, the EMAIL_HOST_PASSWORD setting is used. + + NOTE: This method is deprecated. It exists for backwards compatibility. + New code should use the EmailMessage class directly. """ - if auth_user is None: - auth_user = settings.EMAIL_HOST_USER - if auth_password is None: - auth_password = settings.EMAIL_HOST_PASSWORD - try: - server = smtplib.SMTP(settings.EMAIL_HOST, settings.EMAIL_PORT) - if auth_user and auth_password: - server.login(auth_user, auth_password) - except: - if fail_silently: - return - raise - num_sent = 0 - for subject, message, from_email, recipient_list in datatuple: - if not recipient_list: - continue - from_email = from_email or settings.DEFAULT_FROM_EMAIL - msg = SafeMIMEText(message, 'plain', settings.DEFAULT_CHARSET) - msg['Subject'] = subject - msg['From'] = from_email - msg['To'] = ', '.join(recipient_list) - msg['Date'] = formatdate() - try: - random_bits = str(random.getrandbits(64)) - except AttributeError: # Python 2.3 doesn't have random.getrandbits(). - random_bits = ''.join([random.choice('1234567890') for i in range(19)]) - msg['Message-ID'] = "<%d.%s@%s>" % (time.time(), random_bits, DNS_NAME) - try: - server.sendmail(from_email, recipient_list, msg.as_string()) - num_sent += 1 - except: - if not fail_silently: - raise - try: - server.quit() - except: - if fail_silently: - return - raise - return num_sent + connection = SMTPConnection(username=auth_user, password=auth_password, + fail_silently=fail_silently) + messages = [EmailMessage(subject, message, sender, recipient) for subject, message, sender, recipient in datatuple] + return connection.send_messages(messages) def mail_admins(subject, message, fail_silently=False): "Sends a message to the admins, as defined by the ADMINS setting." - send_mail(settings.EMAIL_SUBJECT_PREFIX + subject, message, settings.SERVER_EMAIL, [a[1] for a in settings.ADMINS], fail_silently) + EmailMessage(settings.EMAIL_SUBJECT_PREFIX + subject, message, + settings.SERVER_EMAIL, [a[1] for a in + settings.ADMINS]).send(fail_silently=fail_silently) def mail_managers(subject, message, fail_silently=False): "Sends a message to the managers, as defined by the MANAGERS setting." - send_mail(settings.EMAIL_SUBJECT_PREFIX + subject, message, settings.SERVER_EMAIL, [a[1] for a in settings.MANAGERS], fail_silently) + EmailMessage(settings.EMAIL_SUBJECT_PREFIX + subject, message, + settings.SERVER_EMAIL, [a[1] for a in + settings.MANAGERS]).send(fail_silently=fail_silently) + diff --git a/django/core/management.py b/django/core/management.py index cff95ff61d..ea79bf5262 100644 --- a/django/core/management.py +++ b/django/core/management.py @@ -168,6 +168,8 @@ def _get_sql_model_create(model, known_models=set()): for f in opts.fields: if isinstance(f, (models.ForeignKey, models.OneToOneField)): rel_field = f.rel.get_related_field() + while isinstance(rel_field, (models.ForeignKey, models.OneToOneField)): + rel_field = rel_field.rel.get_related_field() data_type = get_rel_data_type(rel_field) else: rel_field = f @@ -239,14 +241,14 @@ def _get_sql_for_pending_references(model, pending_references): def _get_many_to_many_sql_for_model(model): from django.db import backend, get_creation_module - from django.db.models import GenericRel + from django.contrib.contenttypes import generic data_types = get_creation_module().DATA_TYPES opts = model._meta final_output = [] for f in opts.many_to_many: - if not isinstance(f.rel, GenericRel): + if not isinstance(f.rel, generic.GenericRel): table_output = [style.SQL_KEYWORD('CREATE TABLE') + ' ' + \ style.SQL_TABLE(backend.quote_name(f.m2m_db_table())) + ' ('] table_output.append(' %s %s %s,' % \ @@ -314,7 +316,7 @@ def get_sql_delete(app): # Drop the table now output.append('%s %s;' % (style.SQL_KEYWORD('DROP TABLE'), style.SQL_TABLE(backend.quote_name(model._meta.db_table)))) - if backend.supports_constraints and references_to_delete.has_key(model): + if backend.supports_constraints and model in references_to_delete: for rel_class, f in references_to_delete[model]: table = rel_class._meta.db_table col = f.column @@ -537,6 +539,7 @@ def syncdb(verbosity=1, interactive=True): # Install custom SQL for the app (but only if this # is a model we've just created) for app in models.get_apps(): + app_name = app.__name__.split('.')[-2] for model in models.get_models(app): if model in created_models: custom_sql = get_custom_sql_for_model(model) @@ -789,11 +792,12 @@ def startapp(app_name, directory): # Determine the project_name a bit naively -- by looking at the name of # the parent directory. project_dir = os.path.normpath(os.path.join(directory, '..')) - project_name = os.path.basename(project_dir) - if app_name == os.path.basename(directory): + parent_dir = os.path.basename(project_dir) + project_name = os.path.basename(directory) + if app_name == project_name: sys.stderr.write(style.ERROR("Error: You cannot create an app with the same name (%r) as your project.\n" % app_name)) sys.exit(1) - _start_helper('app', app_name, directory, project_name) + _start_helper('app', app_name, directory, parent_dir) startapp.help_doc = "Creates a Django app directory structure for the given app name in the current directory." startapp.args = "[appname]" @@ -842,7 +846,7 @@ def inspectdb(): att_name += '_field' comment_notes.append('Field renamed because it was a Python reserved word.') - if relations.has_key(i): + if i in relations: rel_to = relations[i][1] == table_name and "'self'" or table2model(relations[i][1]) field_type = 'ForeignKey(%s' % rel_to if att_name.endswith('_id'): @@ -1320,6 +1324,8 @@ def load_data(fixture_labels, verbosity=1): from django.conf import settings import sys + disable_termcolors() + # Keep a count of the installed objects and fixtures count = [0,0] models = set() @@ -1552,7 +1558,7 @@ def execute_from_command_line(action_mapping=DEFAULT_ACTION_MAPPING, argv=None): action = args[0] except IndexError: parser.print_usage_and_exit() - if not action_mapping.has_key(action): + if action not in action_mapping: print_error("Your action, %r, was invalid." % action, argv[0]) # Switch to English, because django-admin.py creates database content diff --git a/django/core/serializers/base.py b/django/core/serializers/base.py index 8e610ad240..86d0037c17 100644 --- a/django/core/serializers/base.py +++ b/django/core/serializers/base.py @@ -105,9 +105,11 @@ class Serializer(object): def getvalue(self): """ - Return the fully serialized queryset. + Return the fully serialized queryset (or None if the output stream is + not seekable). """ - return self.stream.getvalue() + if callable(getattr(self.stream, 'getvalue', None)): + return self.stream.getvalue() class Deserializer(object): """ diff --git a/django/core/serializers/json.py b/django/core/serializers/json.py index 15770f160e..7c029e7029 100644 --- a/django/core/serializers/json.py +++ b/django/core/serializers/json.py @@ -17,9 +17,10 @@ class Serializer(PythonSerializer): """ def end_serialization(self): simplejson.dump(self.objects, self.stream, cls=DateTimeAwareJSONEncoder, **self.options) - + def getvalue(self): - return self.stream.getvalue() + if callable(getattr(self.stream, 'getvalue', None)): + return self.stream.getvalue() def Deserializer(stream_or_string, **options): """ @@ -31,15 +32,15 @@ def Deserializer(stream_or_string, **options): stream = stream_or_string for obj in PythonDeserializer(simplejson.load(stream)): yield obj - + class DateTimeAwareJSONEncoder(simplejson.JSONEncoder): """ JSONEncoder subclass that knows how to encode date/time types """ - - DATE_FORMAT = "%Y-%m-%d" + + DATE_FORMAT = "%Y-%m-%d" TIME_FORMAT = "%H:%M:%S" - + def default(self, o): if isinstance(o, datetime.datetime): return o.strftime("%s %s" % (self.DATE_FORMAT, self.TIME_FORMAT)) diff --git a/django/core/servers/basehttp.py b/django/core/servers/basehttp.py index a16b8b675a..80a0bf6a91 100644 --- a/django/core/servers/basehttp.py +++ b/django/core/servers/basehttp.py @@ -208,15 +208,15 @@ def guess_scheme(environ): else: return 'http' -_hoppish = { +_hop_headers = { 'connection':1, 'keep-alive':1, 'proxy-authenticate':1, 'proxy-authorization':1, 'te':1, 'trailers':1, 'transfer-encoding':1, 'upgrade':1 -}.has_key +} def is_hop_by_hop(header_name): """Return true if 'header_name' is an HTTP/1.1 "Hop-by-Hop" header""" - return _hoppish(header_name.lower()) + return header_name.lower() in _hop_headers class ServerHandler(object): """Manage the invocation of a WSGI application""" @@ -334,7 +334,7 @@ class ServerHandler(object): Subclasses can extend this to add other defaults. """ - if not self.headers.has_key('Content-Length'): + if 'Content-Length' not in self.headers: self.set_content_length() def start_response(self, status, headers,exc_info=None): @@ -368,11 +368,11 @@ class ServerHandler(object): if self.origin_server: if self.client_is_modern(): self._write('HTTP/%s %s\r\n' % (self.http_version,self.status)) - if not self.headers.has_key('Date'): + if 'Date' not in self.headers: self._write( 'Date: %s\r\n' % time.asctime(time.gmtime(time.time())) ) - if self.server_software and not self.headers.has_key('Server'): + if self.server_software and 'Server' not in self.headers: self._write('Server: %s\r\n' % self.server_software) else: self._write('Status: %s\r\n' % self.status) diff --git a/django/core/urlresolvers.py b/django/core/urlresolvers.py index c4cbccabcf..38b3263da1 100644 --- a/django/core/urlresolvers.py +++ b/django/core/urlresolvers.py @@ -102,6 +102,14 @@ class RegexURLPattern(object): self.default_args = default_args or {} self.name = name + def add_prefix(self, prefix): + """ + Adds the prefix string to a string-based callback. + """ + if not prefix or not hasattr(self, '_callback_str'): + return + self._callback_str = prefix + '.' + self._callback_str + def resolve(self, path): match = self.regex.search(path) if match: diff --git a/django/core/validators.py b/django/core/validators.py index bd7d790e04..26165c4af1 100644 --- a/django/core/validators.py +++ b/django/core/validators.py @@ -284,7 +284,7 @@ class ValidateIfOtherFieldEquals(object): self.always_test = True def __call__(self, field_data, all_data): - if all_data.has_key(self.other_field) and all_data[self.other_field] == self.other_value: + if self.other_field in all_data and all_data[self.other_field] == self.other_value: for v in self.validator_list: v(field_data, all_data) @@ -322,7 +322,7 @@ class RequiredIfOtherFieldEquals(object): self.always_test = True def __call__(self, field_data, all_data): - if all_data.has_key(self.other_field) and all_data[self.other_field] == self.other_value and not field_data: + if self.other_field in all_data and all_data[self.other_field] == self.other_value and not field_data: raise ValidationError(self.error_message) class RequiredIfOtherFieldDoesNotEqual(object): @@ -335,7 +335,7 @@ class RequiredIfOtherFieldDoesNotEqual(object): self.always_test = True def __call__(self, field_data, all_data): - if all_data.has_key(self.other_field) and all_data[self.other_field] != self.other_value and not field_data: + if self.other_field in all_data and all_data[self.other_field] != self.other_value and not field_data: raise ValidationError(self.error_message) class IsLessThanOtherField(object): diff --git a/django/db/__init__.py b/django/db/__init__.py index 4176b5aa79..33223d200a 100644 --- a/django/db/__init__.py +++ b/django/db/__init__.py @@ -2,7 +2,7 @@ from django.conf import settings from django.core import signals from django.dispatch import dispatcher -__all__ = ('backend', 'connection', 'DatabaseError') +__all__ = ('backend', 'connection', 'DatabaseError', 'IntegrityError') if not settings.DATABASE_ENGINE: settings.DATABASE_ENGINE = 'dummy' @@ -29,6 +29,7 @@ runshell = lambda: __import__('django.db.backends.%s.client' % settings.DATABASE connection = backend.DatabaseWrapper(**settings.DATABASE_OPTIONS) DatabaseError = backend.DatabaseError +IntegrityError = backend.IntegrityError # Register an event that closes the database connection # when a Django request is finished. diff --git a/django/db/backends/ado_mssql/base.py b/django/db/backends/ado_mssql/base.py index 1a2f3de140..52363ed705 100644 --- a/django/db/backends/ado_mssql/base.py +++ b/django/db/backends/ado_mssql/base.py @@ -17,6 +17,7 @@ except ImportError: mx = None DatabaseError = Database.DatabaseError +IntegrityError = Database.IntegrityError # We need to use a special Cursor class because adodbapi expects question-mark # param style, but Django expects "%s". This cursor converts question marks to diff --git a/django/db/backends/dummy/base.py b/django/db/backends/dummy/base.py index eb3c3867c2..6a909016fc 100644 --- a/django/db/backends/dummy/base.py +++ b/django/db/backends/dummy/base.py @@ -15,6 +15,9 @@ def complain(*args, **kwargs): class DatabaseError(Exception): pass +class IntegrityError(DatabaseError): + pass + class DatabaseWrapper: cursor = complain _commit = complain diff --git a/django/db/backends/mysql/base.py b/django/db/backends/mysql/base.py index 3c2431a982..41f4638980 100644 --- a/django/db/backends/mysql/base.py +++ b/django/db/backends/mysql/base.py @@ -25,6 +25,7 @@ import types import re DatabaseError = Database.DatabaseError +IntegrityError = Database.IntegrityError # 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 diff --git a/django/db/backends/mysql/introspection.py b/django/db/backends/mysql/introspection.py index 7829457fa9..558fe49787 100644 --- a/django/db/backends/mysql/introspection.py +++ b/django/db/backends/mysql/introspection.py @@ -85,7 +85,7 @@ DATA_TYPES_REVERSE = { FIELD_TYPE.LONG: 'IntegerField', FIELD_TYPE.LONGLONG: 'IntegerField', FIELD_TYPE.SHORT: 'IntegerField', - FIELD_TYPE.STRING: 'TextField', + FIELD_TYPE.STRING: 'CharField', FIELD_TYPE.TIMESTAMP: 'DateTimeField', FIELD_TYPE.TINY: 'IntegerField', FIELD_TYPE.TINY_BLOB: 'TextField', diff --git a/django/db/backends/mysql_old/base.py b/django/db/backends/mysql_old/base.py index ded0b6cbcb..d56b8513f9 100644 --- a/django/db/backends/mysql_old/base.py +++ b/django/db/backends/mysql_old/base.py @@ -16,6 +16,7 @@ import types import re DatabaseError = Database.DatabaseError +IntegrityError = Database.IntegrityError django_conversions = conversions.copy() django_conversions.update({ @@ -52,7 +53,7 @@ class MysqlDebugWrapper: raise Database.Warning, "%s: %s" % (w, self.cursor.fetchall()) def __getattr__(self, attr): - if self.__dict__.has_key(attr): + if attr in self.__dict__: return self.__dict__[attr] else: return getattr(self.cursor, attr) diff --git a/django/db/backends/oracle/base.py b/django/db/backends/oracle/base.py index 0f32407638..2bc88bb7b9 100644 --- a/django/db/backends/oracle/base.py +++ b/django/db/backends/oracle/base.py @@ -12,6 +12,7 @@ except ImportError, e: raise ImproperlyConfigured, "Error loading cx_Oracle module: %s" % e DatabaseError = Database.Error +IntegrityError = Database.IntegrityError try: # Only exists in Python 2.4+ diff --git a/django/db/backends/postgresql/base.py b/django/db/backends/postgresql/base.py index 0dab19ba0d..dc0fbe3ab9 100644 --- a/django/db/backends/postgresql/base.py +++ b/django/db/backends/postgresql/base.py @@ -12,6 +12,7 @@ except ImportError, e: raise ImproperlyConfigured, "Error loading psycopg module: %s" % e DatabaseError = Database.DatabaseError +IntegrityError = Database.IntegrityError try: # Only exists in Python 2.4+ @@ -47,7 +48,7 @@ class UnicodeCursorWrapper(object): return self.cursor.executemany(sql, new_param_list) def __getattr__(self, attr): - if self.__dict__.has_key(attr): + if attr in self.__dict__: return self.__dict__[attr] else: return getattr(self.cursor, attr) @@ -192,7 +193,7 @@ def get_sql_flush(style, tables, sequences): sql.append("%s %s %s %s %s %s;" % \ (style.SQL_KEYWORD('ALTER'), style.SQL_KEYWORD('SEQUENCE'), - style.SQL_FIELD('%s_%s_seq' % (table_name, column_name)), + style.SQL_FIELD(quote_name('%s_%s_seq' % (table_name, column_name))), style.SQL_KEYWORD('RESTART'), style.SQL_KEYWORD('WITH'), style.SQL_FIELD('1') @@ -203,7 +204,7 @@ def get_sql_flush(style, tables, sequences): sql.append("%s %s %s %s %s %s;" % \ (style.SQL_KEYWORD('ALTER'), style.SQL_KEYWORD('SEQUENCE'), - style.SQL_FIELD('%s_id_seq' % table_name), + style.SQL_FIELD(quote_name('%s_id_seq' % table_name)), style.SQL_KEYWORD('RESTART'), style.SQL_KEYWORD('WITH'), style.SQL_FIELD('1') diff --git a/django/db/backends/postgresql_psycopg2/base.py b/django/db/backends/postgresql_psycopg2/base.py index 58e232df68..d6f34f1fe1 100644 --- a/django/db/backends/postgresql_psycopg2/base.py +++ b/django/db/backends/postgresql_psycopg2/base.py @@ -12,6 +12,7 @@ except ImportError, e: raise ImproperlyConfigured, "Error loading psycopg2 module: %s" % e DatabaseError = Database.DatabaseError +IntegrityError = Database.IntegrityError try: # Only exists in Python 2.4+ @@ -149,7 +150,7 @@ def get_sql_flush(style, tables, sequences): sql.append("%s %s %s %s %s %s;" % \ (style.SQL_KEYWORD('ALTER'), style.SQL_KEYWORD('SEQUENCE'), - style.SQL_FIELD('%s_%s_seq' % (table_name, column_name)), + style.SQL_FIELD(quote_name('%s_%s_seq' % (table_name, column_name))), style.SQL_KEYWORD('RESTART'), style.SQL_KEYWORD('WITH'), style.SQL_FIELD('1') @@ -160,7 +161,7 @@ def get_sql_flush(style, tables, sequences): sql.append("%s %s %s %s %s %s;" % \ (style.SQL_KEYWORD('ALTER'), style.SQL_KEYWORD('SEQUENCE'), - style.SQL_FIELD('%s_id_seq' % table_name), + style.SQL_FIELD(quote_name('%s_id_seq' % table_name)), style.SQL_KEYWORD('RESTART'), style.SQL_KEYWORD('WITH'), style.SQL_FIELD('1') diff --git a/django/db/backends/sqlite3/base.py b/django/db/backends/sqlite3/base.py index ec0f715491..d8e1336a9a 100644 --- a/django/db/backends/sqlite3/base.py +++ b/django/db/backends/sqlite3/base.py @@ -18,6 +18,7 @@ except ImportError, e: raise ImproperlyConfigured, "Error loading %s module: %s" % (module, e) DatabaseError = Database.DatabaseError +IntegrityError = Database.IntegrityError Database.register_converter("bool", lambda s: str(s) == '1') Database.register_converter("time", util.typecast_time) diff --git a/django/db/backends/util.py b/django/db/backends/util.py index d8f86fef4f..d14a337ca2 100644 --- a/django/db/backends/util.py +++ b/django/db/backends/util.py @@ -33,7 +33,7 @@ class CursorDebugWrapper(object): }) def __getattr__(self, attr): - if self.__dict__.has_key(attr): + if attr in self.__dict__: return self.__dict__[attr] else: return getattr(self.cursor, attr) diff --git a/django/db/models/__init__.py b/django/db/models/__init__.py index 01da0003fd..887ddc1e47 100644 --- a/django/db/models/__init__.py +++ b/django/db/models/__init__.py @@ -8,7 +8,6 @@ from django.db.models.manager import Manager from django.db.models.base import Model from django.db.models.fields import * from django.db.models.fields.related import ForeignKey, OneToOneField, ManyToManyField, ManyToOneRel, ManyToManyRel, OneToOneRel, TABULAR, STACKED -from django.db.models.fields.generic import GenericRelation, GenericRel, GenericForeignKey from django.db.models import signals from django.utils.functional import curry from django.utils.text import capfirst @@ -27,32 +26,3 @@ def permalink(func): viewname = bits[0] return reverse(bits[0], None, *bits[1:3]) return inner - -class LazyDate(object): - """ - Use in limit_choices_to to compare the field to dates calculated at run time - instead of when the model is loaded. For example:: - - ... limit_choices_to = {'date__gt' : models.LazyDate(days=-3)} ... - - which will limit the choices to dates greater than three days ago. - """ - def __init__(self, **kwargs): - self.delta = datetime.timedelta(**kwargs) - - def __str__(self): - return str(self.__get_value__()) - - def __repr__(self): - return "" % self.delta - - def __get_value__(self): - return (datetime.datetime.now() + self.delta).date() - - def __getattr__(self, attr): - if attr == 'delta': - # To fix ticket #3377. Note that normal accesses to LazyDate.delta - # (after construction) will still work, because they don't go - # through __getattr__). This is mainly needed for unpickling. - raise AttributeError - return getattr(self.__get_value__(), attr) diff --git a/django/db/models/base.py b/django/db/models/base.py index a5c559b6d7..899b1086c9 100644 --- a/django/db/models/base.py +++ b/django/db/models/base.py @@ -42,11 +42,11 @@ class ModelBase(type): new_class._meta.parents.append(base) new_class._meta.parents.extend(base._meta.parents) - model_module = sys.modules[new_class.__module__] if getattr(new_class._meta, 'app_label', None) is None: # Figure out the app_label by looking one level up. # For 'django.contrib.sites.models', this would be 'sites'. + model_module = sys.modules[new_class.__module__] new_class._meta.app_label = model_module.__name__.split('.')[-2] # Bail out early if we have already created this class. diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py index ccbe6d858c..d1c6fa1a74 100644 --- a/django/db/models/fields/__init__.py +++ b/django/db/models/fields/__init__.py @@ -338,11 +338,13 @@ class Field(object): return self._choices choices = property(_get_choices) - def formfield(self, **kwargs): + def formfield(self, form_class=forms.CharField, **kwargs): "Returns a django.newforms.Field instance for this database Field." defaults = {'required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text} + if self.choices: + defaults['widget'] = forms.Select(choices=self.get_choices()) defaults.update(kwargs) - return forms.CharField(**defaults) + return form_class(**defaults) def value_from_object(self, obj): "Returns the value of this field in the given model instance." @@ -402,9 +404,9 @@ class BooleanField(Field): return [oldforms.CheckboxField] def formfield(self, **kwargs): - defaults = {'required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text} + defaults = {'form_class': forms.BooleanField} defaults.update(kwargs) - return forms.BooleanField(**defaults) + return super(BooleanField, self).formfield(**defaults) class CharField(Field): def get_manipulator_field_objs(self): @@ -421,9 +423,9 @@ class CharField(Field): return str(value) def formfield(self, **kwargs): - defaults = {'max_length': self.maxlength, 'required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text} + defaults = {'max_length': self.maxlength} defaults.update(kwargs) - return forms.CharField(**defaults) + return super(CharField, self).formfield(**defaults) # TODO: Maybe move this into contrib, because it's specialized. class CommaSeparatedIntegerField(CharField): @@ -499,9 +501,9 @@ class DateField(Field): return {self.attname: (val is not None and val.strftime("%Y-%m-%d") or '')} def formfield(self, **kwargs): - defaults = {'required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text} + defaults = {'form_class': forms.DateField} defaults.update(kwargs) - return forms.DateField(**defaults) + return super(DateField, self).formfield(**defaults) class DateTimeField(DateField): def to_python(self, value): @@ -564,9 +566,9 @@ class DateTimeField(DateField): time_field: (val is not None and val.strftime("%H:%M:%S") or '')} def formfield(self, **kwargs): - defaults = {'required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text} + defaults = {'form_class': forms.DateTimeField} defaults.update(kwargs) - return forms.DateTimeField(**defaults) + return super(DateTimeField, self).formfield(**defaults) class EmailField(CharField): def __init__(self, *args, **kwargs): @@ -583,9 +585,9 @@ class EmailField(CharField): validators.isValidEmail(field_data, all_data) def formfield(self, **kwargs): - defaults = {'required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text} + defaults = {'form_class': forms.EmailField} defaults.update(kwargs) - return forms.EmailField(**defaults) + return super(EmailField, self).formfield(**defaults) class FileField(Field): def __init__(self, verbose_name=None, name=None, upload_to='', **kwargs): @@ -720,9 +722,9 @@ class IntegerField(Field): return [oldforms.IntegerField] def formfield(self, **kwargs): - defaults = {'required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text} + defaults = {'form_class': forms.IntegerField} defaults.update(kwargs) - return forms.IntegerField(**defaults) + return super(IntegerField, self).formfield(**defaults) class IPAddressField(Field): def __init__(self, *args, **kwargs): @@ -764,9 +766,9 @@ class PhoneNumberField(IntegerField): def formfield(self, **kwargs): from django.contrib.localflavor.us.forms import USPhoneNumberField - defaults = {'required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text} + defaults = {'form_class': USPhoneNumberField} defaults.update(kwargs) - return USPhoneNumberField(**defaults) + return super(PhoneNumberField, self).formfield(**defaults) class PositiveIntegerField(IntegerField): def get_manipulator_field_objs(self): @@ -781,7 +783,7 @@ class SlugField(Field): kwargs['maxlength'] = kwargs.get('maxlength', 50) kwargs.setdefault('validator_list', []).append(validators.isSlug) # Set db_index=True unless it's been set manually. - if not kwargs.has_key('db_index'): + if 'db_index' not in kwargs: kwargs['db_index'] = True Field.__init__(self, *args, **kwargs) @@ -797,9 +799,9 @@ class TextField(Field): return [oldforms.LargeTextField] def formfield(self, **kwargs): - defaults = {'required': not self.blank, 'widget': forms.Textarea, 'label': capfirst(self.verbose_name), 'help_text': self.help_text} + defaults = {'widget': forms.Textarea} defaults.update(kwargs) - return forms.CharField(**defaults) + return super(TextField, self).formfield(**defaults) class TimeField(Field): empty_strings_allowed = False @@ -842,9 +844,9 @@ class TimeField(Field): return {self.attname: (val is not None and val.strftime("%H:%M:%S") or '')} def formfield(self, **kwargs): - defaults = {'required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text} + defaults = {'form_class': forms.TimeField} defaults.update(kwargs) - return forms.TimeField(**defaults) + return super(TimeField, self).formfield(**defaults) class URLField(CharField): def __init__(self, verbose_name=None, name=None, verify_exists=True, **kwargs): @@ -861,14 +863,20 @@ class URLField(CharField): return "CharField" def formfield(self, **kwargs): - defaults = {'required': not self.blank, 'verify_exists': self.verify_exists, 'label': capfirst(self.verbose_name), 'help_text': self.help_text} + defaults = {'form_class': forms.URLField, 'verify_exists': self.verify_exists} defaults.update(kwargs) - return forms.URLField(**defaults) + return super(URLField, self).formfield(**defaults) class USStateField(Field): def get_manipulator_field_objs(self): return [oldforms.USStateField] + def formfield(self, **kwargs): + from django.contrib.localflavor.us.forms import USStateSelect + defaults = {'widget': USStateSelect} + defaults.update(kwargs) + return super(USStateField, self).formfield(**defaults) + class XMLField(TextField): def __init__(self, verbose_name=None, name=None, schema_path=None, **kwargs): self.schema_path = schema_path diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py index da1de80c53..1b5716eb00 100644 --- a/django/db/models/fields/related.py +++ b/django/db/models/fields/related.py @@ -474,7 +474,7 @@ class ForeignKey(RelatedField, Field): to_field = to_field or to._meta.pk.name kwargs['verbose_name'] = kwargs.get('verbose_name', '') - if kwargs.has_key('edit_inline_type'): + if 'edit_inline_type' in kwargs: import warnings warnings.warn("edit_inline_type is deprecated. Use edit_inline instead.") kwargs['edit_inline'] = kwargs.pop('edit_inline_type') @@ -545,9 +545,9 @@ class ForeignKey(RelatedField, Field): setattr(cls, related.get_accessor_name(), ForeignRelatedObjectsDescriptor(related)) def formfield(self, **kwargs): - defaults = {'queryset': self.rel.to._default_manager.all(), 'required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text} + defaults = {'form_class': forms.ModelChoiceField, 'queryset': self.rel.to._default_manager.all()} defaults.update(kwargs) - return forms.ModelChoiceField(**defaults) + return super(ForeignKey, self).formfield(**defaults) class OneToOneField(RelatedField, IntegerField): def __init__(self, to, to_field=None, **kwargs): @@ -559,7 +559,7 @@ class OneToOneField(RelatedField, IntegerField): to_field = to_field or to._meta.pk.name kwargs['verbose_name'] = kwargs.get('verbose_name', '') - if kwargs.has_key('edit_inline_type'): + if 'edit_inline_type' in kwargs: import warnings warnings.warn("edit_inline_type is deprecated. Use edit_inline instead.") kwargs['edit_inline'] = kwargs.pop('edit_inline_type') @@ -606,9 +606,9 @@ class OneToOneField(RelatedField, IntegerField): cls._meta.one_to_one_field = self def formfield(self, **kwargs): - defaults = {'queryset': self.rel.to._default_manager.all(), 'required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text} + defaults = {'form_class': forms.ModelChoiceField, 'queryset': self.rel.to._default_manager.all()} defaults.update(kwargs) - return forms.ModelChoiceField(**defaults) + return super(OneToOneField, self).formfield(**defaults) class ManyToManyField(RelatedField, Field): def __init__(self, to, **kwargs): @@ -712,13 +712,13 @@ class ManyToManyField(RelatedField, Field): return getattr(obj, self.attname).all() def formfield(self, **kwargs): + defaults = {'form_class': forms.ModelMultipleChoiceField, 'queryset': self.rel.to._default_manager.all()} + defaults.update(kwargs) # If initial is passed in, it's a list of related objects, but the # MultipleChoiceField takes a list of IDs. - if kwargs.get('initial') is not None: - kwargs['initial'] = [i._get_pk_val() for i in kwargs['initial']] - defaults = {'queryset' : self.rel.to._default_manager.all(), 'required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text} - defaults.update(kwargs) - return forms.ModelMultipleChoiceField(**defaults) + if defaults.get('initial') is not None: + defaults['initial'] = [i._get_pk_val() for i in defaults['initial']] + return super(ManyToManyField, self).formfield(**defaults) class ManyToOneRel(object): def __init__(self, to, field_name, num_in_admin=3, min_num_in_admin=None, diff --git a/django/db/models/loading.py b/django/db/models/loading.py index f4aff2438b..224f5e8451 100644 --- a/django/db/models/loading.py +++ b/django/db/models/loading.py @@ -103,7 +103,7 @@ def register_models(app_label, *models): # in the _app_models dictionary model_name = model._meta.object_name.lower() model_dict = _app_models.setdefault(app_label, {}) - if model_dict.has_key(model_name): + if model_name in model_dict: # The same model may be imported via different paths (e.g. # appname.models and project.appname.models). We use the source # filename as a means to detect identity. diff --git a/django/db/models/options.py b/django/db/models/options.py index 8e798364bf..d75bfd495d 100644 --- a/django/db/models/options.py +++ b/django/db/models/options.py @@ -139,7 +139,7 @@ class Options(object): def get_follow(self, override=None): follow = {} for f in self.fields + self.many_to_many + self.get_all_related_objects(): - if override and override.has_key(f.name): + if override and f.name in override: child_override = override[f.name] else: child_override = None @@ -181,7 +181,7 @@ class Options(object): # TODO: follow if not hasattr(self, '_field_types'): self._field_types = {} - if not self._field_types.has_key(field_type): + if field_type not in self._field_types: try: # First check self.fields. for f in self.fields: diff --git a/django/db/models/query.py b/django/db/models/query.py index e01905551e..08a7901d6f 100644 --- a/django/db/models/query.py +++ b/django/db/models/query.py @@ -1,9 +1,9 @@ from django.db import backend, connection, transaction from django.db.models.fields import DateField, FieldDoesNotExist -from django.db.models.fields.generic import GenericRelation -from django.db.models import signals +from django.db.models import signals, loading from django.dispatch import dispatcher from django.utils.datastructures import SortedDict +from django.contrib.contenttypes import generic import operator import re @@ -189,7 +189,7 @@ class QuerySet(object): raise StopIteration for row in rows: if fill_cache: - obj, index_end = get_cached_row(klass=self.model, row=row, + obj, index_end = get_cached_row(klass=self.model, row=row, index_start=0, max_depth=self._max_related_depth) else: obj = self.model(*row[:index_end]) @@ -201,14 +201,14 @@ class QuerySet(object): """ Performs a SELECT COUNT() and returns the number of records as an integer. - + If the queryset is already cached (i.e. self._result_cache is set) this simply returns the length of the cached results set to avoid multiple SELECT COUNT(*) calls. """ if self._result_cache is not None: return len(self._result_cache) - + counter = self._clone() counter._order_by = () counter._select_related = False @@ -488,9 +488,9 @@ class QuerySet(object): # Add additional tables and WHERE clauses based on select_related. if self._select_related: - fill_table_cache(opts, select, tables, where, - old_prefix=opts.db_table, - cache_tables_seen=[opts.db_table], + fill_table_cache(opts, select, tables, where, + old_prefix=opts.db_table, + cache_tables_seen=[opts.db_table], max_depth=self._max_related_depth) # Add any additional SELECTs. @@ -738,11 +738,11 @@ def get_where_clause(lookup_type, table_prefix, field_name, value): def get_cached_row(klass, row, index_start, max_depth=0, cur_depth=0): """Helper function that recursively returns an object with cache filled""" - + # If we've got a max_depth set and we've exceeded that depth, bail now. if max_depth and cur_depth > max_depth: return None - + index_end = index_start + len(klass._meta.fields) obj = klass(*row[index_start:index_end]) for f in klass._meta.fields: @@ -758,11 +758,11 @@ def fill_table_cache(opts, select, tables, where, old_prefix, cache_tables_seen, Helper function that recursively populates the select, tables and where (in place) for select_related queries. """ - + # If we've got a max_depth set and we've exceeded that depth, bail now. if max_depth and cur_depth > max_depth: return None - + qn = backend.quote_name for f in opts.fields: if f.rel and not f.null: @@ -827,6 +827,8 @@ def parse_lookup(kwarg_items, opts): # all uses of None as a query value. if lookup_type != 'exact': raise ValueError, "Cannot use None as a query value" + elif callable(value): + value = value() joins2, where2, params2 = lookup_inner(path, lookup_type, value, opts, opts.db_table, None) joins.update(joins2) @@ -851,6 +853,13 @@ def find_field(name, field_list, related_query): return None return matches[0] +def field_choices(field_list, related_query): + if related_query: + choices = [f.field.related_query_name() for f in field_list] + else: + choices = [f.name for f in field_list] + return choices + def lookup_inner(path, lookup_type, value, opts, table, column): qn = backend.quote_name joins, where, params = SortedDict(), [], [] @@ -935,7 +944,11 @@ def lookup_inner(path, lookup_type, value, opts, table, column): except FieldFound: # Match found, loop has been shortcut. pass else: # No match found. - raise TypeError, "Cannot resolve keyword '%s' into field" % name + choices = field_choices(current_opts.many_to_many, False) + \ + field_choices(current_opts.get_all_related_many_to_many_objects(), True) + \ + field_choices(current_opts.get_all_related_objects(), True) + \ + field_choices(current_opts.fields, False) + raise TypeError, "Cannot resolve keyword '%s' into field. Choices are: %s" % (name, ", ".join(choices)) # Check whether an intermediate join is required between current_table # and new_table. @@ -1028,7 +1041,7 @@ def delete_objects(seen_objs): pk_list = [pk for pk,instance in seen_objs[cls]] for related in cls._meta.get_all_related_many_to_many_objects(): - if not isinstance(related.field, GenericRelation): + if not isinstance(related.field, generic.GenericRelation): for offset in range(0, len(pk_list), GET_ITERATOR_CHUNK_SIZE): cursor.execute("DELETE FROM %s WHERE %s IN (%s)" % \ (qn(related.field.m2m_db_table()), @@ -1036,7 +1049,7 @@ def delete_objects(seen_objs): ','.join(['%s' for pk in pk_list[offset:offset+GET_ITERATOR_CHUNK_SIZE]])), pk_list[offset:offset+GET_ITERATOR_CHUNK_SIZE]) for f in cls._meta.many_to_many: - if isinstance(f, GenericRelation): + if isinstance(f, generic.GenericRelation): from django.contrib.contenttypes.models import ContentType query_extra = 'AND %s=%%s' % f.rel.to._meta.get_field(f.content_type_field_name).column args_extra = [ContentType.objects.get_for_model(cls).id] diff --git a/django/db/transaction.py b/django/db/transaction.py index 4a0658e1c3..bb90713525 100644 --- a/django/db/transaction.py +++ b/django/db/transaction.py @@ -46,12 +46,12 @@ def enter_transaction_management(): when no current block is running). """ thread_ident = thread.get_ident() - if state.has_key(thread_ident) and state[thread_ident]: + if thread_ident in state and state[thread_ident]: state[thread_ident].append(state[thread_ident][-1]) else: state[thread_ident] = [] state[thread_ident].append(settings.TRANSACTIONS_MANAGED) - if not dirty.has_key(thread_ident): + if thread_ident not in dirty: dirty[thread_ident] = False def leave_transaction_management(): @@ -61,7 +61,7 @@ def leave_transaction_management(): those from outside. (Commits are on connection level.) """ thread_ident = thread.get_ident() - if state.has_key(thread_ident) and state[thread_ident]: + if thread_ident in state and state[thread_ident]: del state[thread_ident][-1] else: raise TransactionManagementError("This code isn't under transaction management") @@ -84,7 +84,7 @@ def set_dirty(): changes waiting for commit. """ thread_ident = thread.get_ident() - if dirty.has_key(thread_ident): + if thread_ident in dirty: dirty[thread_ident] = True else: raise TransactionManagementError("This code isn't under transaction management") @@ -96,7 +96,7 @@ def set_clean(): should happen. """ thread_ident = thread.get_ident() - if dirty.has_key(thread_ident): + if thread_ident in dirty: dirty[thread_ident] = False else: raise TransactionManagementError("This code isn't under transaction management") @@ -106,7 +106,7 @@ def is_managed(): Checks whether the transaction manager is in manual or in auto state. """ thread_ident = thread.get_ident() - if state.has_key(thread_ident): + if thread_ident in state: if state[thread_ident]: return state[thread_ident][-1] return settings.TRANSACTIONS_MANAGED diff --git a/django/http/__init__.py b/django/http/__init__.py index ed2c128a16..74a4eff55c 100644 --- a/django/http/__init__.py +++ b/django/http/__init__.py @@ -29,12 +29,12 @@ class HttpRequest(object): def __getitem__(self, key): for d in (self.POST, self.GET): - if d.has_key(key): + if key in d: return d[key] raise KeyError, "%s not found in either POST or GET" % key def has_key(self, key): - return self.GET.has_key(key) or self.POST.has_key(key) + return key in self.GET or key in self.POST def get_full_path(self): return '' @@ -57,7 +57,7 @@ def parse_file_upload(header_dict, post_data): # name_dict is something like {'name': 'file', 'filename': 'test.txt'} for file uploads # or {'name': 'blah'} for POST fields # We assume all uploaded files have a 'filename' set. - if name_dict.has_key('filename'): + if 'filename' in name_dict: assert type([]) != type(submessage.get_payload()), "Nested MIME messages are not supported" if not name_dict['filename'].strip(): continue @@ -66,7 +66,7 @@ def parse_file_upload(header_dict, post_data): filename = name_dict['filename'][name_dict['filename'].rfind("\\")+1:] FILES.appendlist(name_dict['name'], { 'filename': filename, - 'content-type': (submessage.has_key('Content-Type') and submessage['Content-Type'] or None), + 'content-type': 'Content-Type' in submessage and submessage['Content-Type'] or None, 'content': submessage.get_payload(), }) else: @@ -91,6 +91,10 @@ class QueryDict(MultiValueDict): self._assert_mutable() MultiValueDict.__setitem__(self, key, value) + def __delitem__(self, key): + self._assert_mutable() + super(QueryDict, self).__delitem__(key) + def __copy__(self): result = self.__class__('', mutable=True) for key, value in dict.items(self): diff --git a/django/middleware/common.py b/django/middleware/common.py index 6283214fad..2c72c9a583 100644 --- a/django/middleware/common.py +++ b/django/middleware/common.py @@ -25,7 +25,7 @@ class CommonMiddleware(object): """ # Check for denied User-Agents - if request.META.has_key('HTTP_USER_AGENT'): + if 'HTTP_USER_AGENT' in request.META: for user_agent_regex in settings.DISALLOWED_USER_AGENTS: if user_agent_regex.search(request.META['HTTP_USER_AGENT']): return http.HttpResponseForbidden('

                              Forbidden

                              ') @@ -66,8 +66,10 @@ class CommonMiddleware(object): path = request.get_full_path() if referer and not _is_ignorable_404(path) and (is_internal or '?' not in referer): ua = request.META.get('HTTP_USER_AGENT', '') + ip = request.META.get('REMOTE_ADDR', '') mail_managers("Broken %slink on %s" % ((is_internal and 'INTERNAL ' or ''), domain), - "Referrer: %s\nRequested URL: %s\nUser agent: %s\n" % (referer, request.get_full_path(), ua)) + "Referrer: %s\nRequested URL: %s\nUser agent: %s\nIP address: %s\n" \ + % (referer, request.get_full_path(), ua, ip)) return response # Use ETags, if requested. diff --git a/django/newforms/fields.py b/django/newforms/fields.py index c3b74e93f7..509c099e86 100644 --- a/django/newforms/fields.py +++ b/django/newforms/fields.py @@ -332,7 +332,9 @@ class NullBooleanField(BooleanField): return {True: True, False: False}.get(value, None) class ChoiceField(Field): - def __init__(self, choices=(), required=True, widget=Select, label=None, initial=None, help_text=None): + widget = Select + + def __init__(self, choices=(), required=True, widget=None, label=None, initial=None, help_text=None): super(ChoiceField, self).__init__(required, widget, label, initial, help_text) self.choices = choices @@ -364,9 +366,7 @@ class ChoiceField(Field): class MultipleChoiceField(ChoiceField): hidden_widget = MultipleHiddenInput - - def __init__(self, choices=(), required=True, widget=SelectMultiple, label=None, initial=None, help_text=None): - super(MultipleChoiceField, self).__init__(choices, required, widget, label, initial, help_text) + widget = SelectMultiple def clean(self, value): """ @@ -457,7 +457,7 @@ class MultiValueField(Field): for i, field in enumerate(self.fields): try: field_value = value[i] - except KeyError: + except IndexError: field_value = None if self.required and field_value in EMPTY_VALUES: raise ValidationError(gettext(u'This field is required.')) diff --git a/django/newforms/forms.py b/django/newforms/forms.py index 2d7a65d7fe..42a06fd00d 100644 --- a/django/newforms/forms.py +++ b/django/newforms/forms.py @@ -122,7 +122,14 @@ class BaseForm(StrAndUnicode): else: if errors_on_separate_row and bf_errors: output.append(error_row % bf_errors) - label = bf.label and bf.label_tag(escape(bf.label + ':')) or '' + if bf.label: + label = escape(bf.label) + # Only add a colon if the label does not end in punctuation. + if label[-1] not in ':?.!': + label += ':' + label = bf.label_tag(label) or '' + else: + label = '' if field.help_text: help_text = help_text_html % field.help_text else: @@ -262,7 +269,7 @@ class BoundField(StrAndUnicode): def as_widget(self, widget, attrs=None): attrs = attrs or {} auto_id = self.auto_id - if auto_id and not attrs.has_key('id') and not widget.attrs.has_key('id'): + if auto_id and 'id' not in attrs and 'id' not in widget.attrs: attrs['id'] = auto_id if not self.form.is_bound: data = self.form.initial.get(self.name, self.field.initial) diff --git a/django/newforms/widgets.py b/django/newforms/widgets.py index f701faa35d..dd71ebc455 100644 --- a/django/newforms/widgets.py +++ b/django/newforms/widgets.py @@ -230,7 +230,7 @@ class RadioInput(StrAndUnicode): return self.value == self.choice_value def tag(self): - if self.attrs.has_key('id'): + if 'id' in self.attrs: self.attrs['id'] = '%s_%s' % (self.attrs['id'], self.index) final_attrs = dict(self.attrs, type='radio', name=self.name, value=self.choice_value) if self.is_checked(): @@ -260,8 +260,8 @@ class RadioSelect(Select): "Returns a RadioFieldRenderer instance rather than a Unicode string." if value is None: value = '' str_value = smart_unicode(value) # Normalize to string. - attrs = attrs or {} - return RadioFieldRenderer(name, str_value, attrs, list(chain(self.choices, choices))) + final_attrs = self.build_attrs(attrs) + return RadioFieldRenderer(name, str_value, final_attrs, list(chain(self.choices, choices))) def id_for_label(self, id_): # RadioSelect is represented by multiple fields, @@ -276,7 +276,7 @@ class RadioSelect(Select): class CheckboxSelectMultiple(SelectMultiple): def render(self, name, value, attrs=None, choices=()): if value is None: value = [] - has_id = attrs and attrs.has_key('id') + has_id = attrs and 'id' in attrs final_attrs = self.build_attrs(attrs, name=name) output = [u'
                                '] str_values = set([smart_unicode(v) for v in value]) # Normalize to strings. @@ -327,16 +327,27 @@ class MultiWidget(Widget): if not isinstance(value, list): value = self.decompress(value) output = [] + final_attrs = self.build_attrs(attrs) + id_ = final_attrs.get('id', None) for i, widget in enumerate(self.widgets): try: widget_value = value[i] - except KeyError: + except IndexError: widget_value = None - output.append(widget.render(name + '_%s' % i, widget_value, attrs)) + if id_: + final_attrs = dict(final_attrs, id='%s_%s' % (id_, i)) + output.append(widget.render(name + '_%s' % i, widget_value, final_attrs)) return self.format_output(output) + def id_for_label(self, id_): + # See the comment for RadioSelect.id_for_label() + if id_: + id_ += '_0' + return id_ + id_for_label = classmethod(id_for_label) + def value_from_datadict(self, data, name): - return [data.get(name + '_%s' % i) for i in range(len(self.widgets))] + return [widget.value_from_datadict(data, name + '_%s' % i) for i, widget in enumerate(self.widgets)] def format_output(self, rendered_widgets): return u''.join(rendered_widgets) diff --git a/django/oldforms/__init__.py b/django/oldforms/__init__.py index 873bd0204a..0a4676ee8f 100644 --- a/django/oldforms/__init__.py +++ b/django/oldforms/__init__.py @@ -329,7 +329,7 @@ class FormField(object): def convert_post_data(self, new_data): name = self.get_member_name() - if new_data.has_key(self.field_name): + if self.field_name in new_data: d = new_data.getlist(self.field_name) try: converted_data = [self.__class__.html2python(data) for data in d] diff --git a/django/template/__init__.py b/django/template/__init__.py index 0d8990a42b..9811a5649d 100644 --- a/django/template/__init__.py +++ b/django/template/__init__.py @@ -99,6 +99,10 @@ libraries = {} # global list of libraries to load by default for a new parser builtins = [] +# True if TEMPLATE_STRING_IF_INVALID contains a format string (%s). None means +# uninitialised. +invalid_var_format_string = None + class TemplateSyntaxError(Exception): def __str__(self): try: @@ -123,10 +127,10 @@ class VariableDoesNotExist(Exception): def __init__(self, msg, params=()): self.msg = msg self.params = params - + def __str__(self): return self.msg % self.params - + class InvalidTemplateLibrary(Exception): pass @@ -193,18 +197,27 @@ class Lexer(object): def tokenize(self): "Return a list of tokens from a given template_string" - # remove all empty strings, because the regex has a tendency to add them - bits = filter(None, tag_re.split(self.template_string)) - return map(self.create_token, bits) + in_tag = False + result = [] + for bit in tag_re.split(self.template_string): + if bit: + result.append(self.create_token(bit, in_tag)) + in_tag = not in_tag + return result - def create_token(self,token_string): - "Convert the given token string into a new Token object and return it" - if token_string.startswith(VARIABLE_TAG_START): - token = Token(TOKEN_VAR, token_string[len(VARIABLE_TAG_START):-len(VARIABLE_TAG_END)].strip()) - elif token_string.startswith(BLOCK_TAG_START): - token = Token(TOKEN_BLOCK, token_string[len(BLOCK_TAG_START):-len(BLOCK_TAG_END)].strip()) - elif token_string.startswith(COMMENT_TAG_START): - token = Token(TOKEN_COMMENT, '') + def create_token(self, token_string, in_tag): + """ + Convert the given token string into a new Token object and return it. + If in_tag is True, we are processing something that matched a tag, + otherwise it should be treated as a literal string. + """ + if in_tag: + if token_string.startswith(VARIABLE_TAG_START): + token = Token(TOKEN_VAR, token_string[len(VARIABLE_TAG_START):-len(VARIABLE_TAG_END)].strip()) + elif token_string.startswith(BLOCK_TAG_START): + token = Token(TOKEN_BLOCK, token_string[len(BLOCK_TAG_START):-len(BLOCK_TAG_END)].strip()) + elif token_string.startswith(COMMENT_TAG_START): + token = Token(TOKEN_COMMENT, '') else: token = Token(TOKEN_TEXT, token_string) return token @@ -215,22 +228,22 @@ class DebugLexer(Lexer): def tokenize(self): "Return a list of tokens from a given template_string" - token_tups, upto = [], 0 + result, upto = [], 0 for match in tag_re.finditer(self.template_string): start, end = match.span() if start > upto: - token_tups.append( (self.template_string[upto:start], (upto, start)) ) + result.append(self.create_token(self.template_string[upto:start], (upto, start), False)) upto = start - token_tups.append( (self.template_string[start:end], (start,end)) ) + result.append(self.create_token(self.template_string[start:end], (start, end), True)) upto = end last_bit = self.template_string[upto:] if last_bit: - token_tups.append( (last_bit, (upto, upto + len(last_bit))) ) - return [self.create_token(tok, (self.origin, loc)) for tok, loc in token_tups] + result.append(self.create_token(last_bit, (upto, upto + len(last_bit)), False)) + return result - def create_token(self, token_string, source): - token = super(DebugLexer, self).create_token(token_string) - token.source = source + def create_token(self, token_string, source, in_tag): + token = super(DebugLexer, self).create_token(token_string, in_tag) + token.source = self.origin, source return token class Parser(object): @@ -338,7 +351,7 @@ class Parser(object): return FilterExpression(token, self) def find_filter(self, filter_name): - if self.filters.has_key(filter_name): + if filter_name in self.filters: return self.filters[filter_name] else: raise TemplateSyntaxError, "Invalid filter: '%s'" % filter_name @@ -555,7 +568,7 @@ class FilterExpression(object): filters.append( (filter_func,args)) upto = match.end() if upto != len(token): - raise TemplateSyntaxError, "Could not parse the remainder: %s" % token[upto:] + raise TemplateSyntaxError, "Could not parse the remainder: '%s' from '%s'" % (token[upto:], token) self.var, self.filters = var, filters def resolve(self, context, ignore_failures=False): @@ -566,6 +579,11 @@ class FilterExpression(object): obj = None else: if settings.TEMPLATE_STRING_IF_INVALID: + global invalid_var_format_string + if invalid_var_format_string is None: + invalid_var_format_string = '%s' in settings.TEMPLATE_STRING_IF_INVALID + if invalid_var_format_string: + return settings.TEMPLATE_STRING_IF_INVALID % self.var return settings.TEMPLATE_STRING_IF_INVALID else: obj = settings.TEMPLATE_STRING_IF_INVALID diff --git a/django/template/context.py b/django/template/context.py index 25397b0e1a..59650b05fe 100644 --- a/django/template/context.py +++ b/django/template/context.py @@ -35,7 +35,7 @@ class Context(object): def __getitem__(self, key): "Get a variable's value, starting at the current context and going upward" for d in self.dicts: - if d.has_key(key): + if key in d: return d[key] raise KeyError(key) @@ -45,7 +45,7 @@ class Context(object): def has_key(self, key): for d in self.dicts: - if d.has_key(key): + if key in d: return True return False @@ -54,7 +54,7 @@ class Context(object): def get(self, key, otherwise=None): for d in self.dicts: - if d.has_key(key): + if key in d: return d[key] return otherwise diff --git a/django/template/defaultfilters.py b/django/template/defaultfilters.py index a025365c90..bbaceba24a 100644 --- a/django/template/defaultfilters.py +++ b/django/template/defaultfilters.py @@ -2,7 +2,7 @@ from django.template import resolve_variable, Library from django.conf import settings -from django.utils.translation import gettext +from django.utils.translation import gettext, ngettext import re import random as random_module @@ -517,12 +517,12 @@ def filesizeformat(bytes): return "0 bytes" if bytes < 1024: - return "%d byte%s" % (bytes, bytes != 1 and 's' or '') + return ngettext("%(size)d byte", "%(size)d bytes", bytes) % {'size': bytes} if bytes < 1024 * 1024: - return "%.1f KB" % (bytes / 1024) + return gettext("%.1f KB") % (bytes / 1024) if bytes < 1024 * 1024 * 1024: - return "%.1f MB" % (bytes / (1024 * 1024)) - return "%.1f GB" % (bytes / (1024 * 1024 * 1024)) + return gettext("%.1f MB") % (bytes / (1024 * 1024)) + return gettext("%.1f GB") % (bytes / (1024 * 1024 * 1024)) def pluralize(value, arg='s'): """ diff --git a/django/template/defaulttags.py b/django/template/defaulttags.py index 448ad8a50b..1ebb01442e 100644 --- a/django/template/defaulttags.py +++ b/django/template/defaulttags.py @@ -41,7 +41,10 @@ class FilterNode(Node): def render(self, context): output = self.nodelist.render(context) # apply filters - return self.filter_expr.resolve(Context({'var': output})) + context.update({'var': output}) + filtered = self.filter_expr.resolve(context) + context.pop() + return filtered class FirstOfNode(Node): def __init__(self, vars): @@ -84,7 +87,7 @@ class ForNode(Node): def render(self, context): nodelist = NodeList() - if context.has_key('forloop'): + if 'forloop' in context: parentloop = context['forloop'] else: parentloop = {} @@ -130,7 +133,7 @@ class IfChangedNode(Node): self._varlist = varlist def render(self, context): - if context.has_key('forloop') and context['forloop']['first']: + if 'forloop' in context and context['forloop']['first']: self._last_seen = None try: if self._varlist: @@ -429,7 +432,7 @@ def cycle(parser, token): name = args[1] if not hasattr(parser, '_namedCycleNodes'): raise TemplateSyntaxError("No named cycles in template: '%s' is not defined" % name) - if not parser._namedCycleNodes.has_key(name): + if name not in parser._namedCycleNodes: raise TemplateSyntaxError("Named cycle '%s' does not exist" % name) return parser._namedCycleNodes[name] @@ -908,7 +911,7 @@ def templatetag(parser, token): if len(bits) != 2: raise TemplateSyntaxError, "'templatetag' statement takes one argument" tag = bits[1] - if not TemplateTagNode.mapping.has_key(tag): + if tag not in TemplateTagNode.mapping: raise TemplateSyntaxError, "Invalid templatetag argument: '%s'. Must be one of: %s" % \ (tag, TemplateTagNode.mapping.keys()) return TemplateTagNode(tag) @@ -953,6 +956,7 @@ def url(parser, token): for arg in bits[2].split(','): if '=' in arg: k, v = arg.split('=', 1) + k = k.strip() kwargs[k] = parser.compile_filter(v) else: args.append(parser.compile_filter(arg)) @@ -990,7 +994,7 @@ def do_with(parser, token): """ Add a value to the context (inside of this block) for caching and easy access. - + For example:: {% with person.some_sql_method as total %} @@ -999,7 +1003,7 @@ def do_with(parser, token): """ bits = list(token.split_contents()) if len(bits) != 4 or bits[2] != "as": - raise TemplateSyntaxError, "%r expected format is 'value as name'" % tagname + raise TemplateSyntaxError, "%r expected format is 'value as name'" % bits[0] var = parser.compile_filter(bits[1]) name = bits[3] nodelist = parser.parse(('endwith',)) diff --git a/django/test/client.py b/django/test/client.py index 95d3b85922..c3110f02ec 100644 --- a/django/test/client.py +++ b/django/test/client.py @@ -1,12 +1,16 @@ +import datetime import sys from cStringIO import StringIO from urlparse import urlparse from django.conf import settings +from django.contrib.auth import authenticate, login +from django.contrib.sessions.models import Session +from django.contrib.sessions.middleware import SessionWrapper from django.core.handlers.base import BaseHandler from django.core.handlers.wsgi import WSGIRequest from django.core.signals import got_request_exception from django.dispatch import dispatcher -from django.http import urlencode, SimpleCookie +from django.http import urlencode, SimpleCookie, HttpRequest from django.test import signals from django.utils.functional import curry @@ -113,7 +117,6 @@ class Client: self.handler = ClientHandler() self.defaults = defaults self.cookies = SimpleCookie() - self.session = {} self.exc_info = None def store_exc_info(self, *args, **kwargs): @@ -123,6 +126,15 @@ class Client: """ self.exc_info = sys.exc_info() + def _session(self): + "Obtain the current session variables" + if 'django.contrib.sessions' in settings.INSTALLED_APPS: + cookie = self.cookies.get(settings.SESSION_COOKIE_NAME, None) + if cookie: + return SessionWrapper(cookie.value) + return {} + session = property(_session) + def request(self, **request): """ The master request method. Composes the environment dictionary @@ -171,16 +183,10 @@ class Client: if self.exc_info: raise self.exc_info[1], None, self.exc_info[2] - # Update persistent cookie and session data + # Update persistent cookie data if response.cookies: self.cookies.update(response.cookies) - if 'django.contrib.sessions' in settings.INSTALLED_APPS: - from django.contrib.sessions.middleware import SessionWrapper - cookie = self.cookies.get(settings.SESSION_COOKIE_NAME, None) - if cookie: - self.session = SessionWrapper(cookie.value) - return response def get(self, path, data={}, **extra): @@ -215,42 +221,34 @@ class Client: return self.request(**r) - def login(self, path, username, password, **extra): + def login(self, **credentials): + """Set the Client to appear as if it has sucessfully logged into a site. + + Returns True if login is possible; False if the provided credentials + are incorrect, or if the Sessions framework is not available. """ - A specialized sequence of GET and POST to log into a view that - is protected by a @login_required access decorator. + user = authenticate(**credentials) + if user and 'django.contrib.sessions' in settings.INSTALLED_APPS: + obj = Session.objects.get_new_session_object() - path should be the URL of the page that is login protected. + # Create a fake request to store login details + request = HttpRequest() + request.session = SessionWrapper(obj.session_key) + login(request, user) - Returns the response from GETting the requested URL after - login is complete. Returns False if login process failed. - """ - # First, GET the page that is login protected. - # This page will redirect to the login page. - response = self.get(path) - if response.status_code != 302: + # Set the cookie to represent the session + self.cookies[settings.SESSION_COOKIE_NAME] = obj.session_key + self.cookies[settings.SESSION_COOKIE_NAME]['max-age'] = None + self.cookies[settings.SESSION_COOKIE_NAME]['path'] = '/' + self.cookies[settings.SESSION_COOKIE_NAME]['domain'] = settings.SESSION_COOKIE_DOMAIN + self.cookies[settings.SESSION_COOKIE_NAME]['secure'] = settings.SESSION_COOKIE_SECURE or None + self.cookies[settings.SESSION_COOKIE_NAME]['expires'] = None + + # Set the session values + Session.objects.save(obj.session_key, request.session._session, + datetime.datetime.now() + datetime.timedelta(seconds=settings.SESSION_COOKIE_AGE)) + + return True + else: return False - - _, _, login_path, _, data, _= urlparse(response['Location']) - next = data.split('=')[1] - - # Second, GET the login page; required to set up cookies - response = self.get(login_path, **extra) - if response.status_code != 200: - return False - - # Last, POST the login data. - form_data = { - 'username': username, - 'password': password, - 'next' : next, - } - response = self.post(login_path, data=form_data, **extra) - - # Login page should 302 redirect to the originally requested page - if (response.status_code != 302 or - urlparse(response['Location'])[2] != path): - return False - - # Since we are logged in, request the actual page again - return self.get(path) + \ No newline at end of file diff --git a/django/test/simple.py b/django/test/simple.py index fed6237929..cfaa09a0a4 100644 --- a/django/test/simple.py +++ b/django/test/simple.py @@ -49,9 +49,12 @@ def build_suite(app_module): pass else: # The module exists, so there must be an import error in the - # test module itself. We don't need the module; close the file - # handle returned by find_module. - mod[0].close() + # test module itself. We don't need the module; so if the + # module was a single file module (i.e., tests.py), close the file + # handle returned by find_module. Otherwise, the test module + # is a directory, and there is nothing to close. + if mod[0]: + mod[0].close() raise return suite diff --git a/django/test/testcases.py b/django/test/testcases.py index 2bfb9a733a..788e215ca1 100644 --- a/django/test/testcases.py +++ b/django/test/testcases.py @@ -1,8 +1,10 @@ import re, doctest, unittest +from urlparse import urlparse from django.db import transaction -from django.core import management +from django.core import management, mail from django.db.models import get_apps - +from django.test.client import Client + normalize_long_ints = lambda s: re.sub(r'(? 1: - raise TypeError, "update expected at most 1 arguments, got %d", len(args) + raise TypeError, "update expected at most 1 arguments, got %d" % len(args) if args: other_dict = args[0] if isinstance(other_dict, MultiValueDict): diff --git a/django/utils/feedgenerator.py b/django/utils/feedgenerator.py index 9397789d6a..aa315b5292 100644 --- a/django/utils/feedgenerator.py +++ b/django/utils/feedgenerator.py @@ -132,6 +132,7 @@ class RssFeed(SyndicationFeed): handler.addQuickElement(u"category", cat) if self.feed['feed_copyright'] is not None: handler.addQuickElement(u"copyright", self.feed['feed_copyright']) + handler.addQuickElement(u"lastBuildDate", rfc2822_date(self.latest_post_date()).decode('ascii')) self.write_items(handler) self.endChannelElement(handler) handler.endElement(u"rss") diff --git a/django/utils/functional.py b/django/utils/functional.py index e3c0a3c76b..0c31c1f375 100644 --- a/django/utils/functional.py +++ b/django/utils/functional.py @@ -42,7 +42,7 @@ def lazy(func, *resultclasses): res = self.__func(*self.__args, **self.__kw) return self.__dispatch[type(res)][funcname](res, *args, **kw) - if not self.__dispatch.has_key(klass): + if klass not in self.__dispatch: self.__dispatch[klass] = {} self.__dispatch[klass][funcname] = func return __wrapper__ diff --git a/django/utils/synch.py b/django/utils/synch.py index 6fcd81390e..2e808c1e01 100644 --- a/django/utils/synch.py +++ b/django/utils/synch.py @@ -1,6 +1,6 @@ """ Synchronization primitives: - + - reader-writer lock (preference to writers) (Contributed to Django by eugene@lazutkin.com) @@ -14,17 +14,16 @@ except ImportError: class RWLock: """ Classic implementation of reader-writer lock with preference to writers. - + Readers can access a resource simultaneously. Writers get an exclusive access. - + API is self-descriptive: reader_enters() reader_leaves() writer_enters() writer_leaves() """ - def __init__(self): self.mutex = threading.RLock() self.can_read = threading.Semaphore(0) @@ -33,7 +32,7 @@ class RWLock: self.active_writers = 0 self.waiting_readers = 0 self.waiting_writers = 0 - + def reader_enters(self): self.mutex.acquire() try: @@ -45,7 +44,7 @@ class RWLock: finally: self.mutex.release() self.can_read.acquire() - + def reader_leaves(self): self.mutex.acquire() try: @@ -56,7 +55,7 @@ class RWLock: self.can_write.release() finally: self.mutex.release() - + def writer_enters(self): self.mutex.acquire() try: @@ -68,7 +67,7 @@ class RWLock: finally: self.mutex.release() self.can_write.acquire() - + def writer_leaves(self): self.mutex.acquire() try: diff --git a/django/utils/timesince.py b/django/utils/timesince.py index e69c45c8c1..394f818395 100644 --- a/django/utils/timesince.py +++ b/django/utils/timesince.py @@ -1,6 +1,6 @@ import datetime, math, time from django.utils.tzinfo import LocalTimezone -from django.utils.translation import ngettext +from django.utils.translation import ngettext, gettext def timesince(d, now=None): """ @@ -37,14 +37,14 @@ def timesince(d, now=None): if count != 0: break if count < 0: - return '%d milliseconds' % math.floor((now - d).microseconds / 1000) - s = '%d %s' % (count, name(count)) + return gettext('%d milliseconds') % math.floor((now - d).microseconds / 1000) + s = gettext('%(number)d %(type)s') % {'number': count, 'type': name(count)} if i + 1 < len(chunks): # Now get the second item seconds2, name2 = chunks[i + 1] count2 = (since - (seconds * count)) / seconds2 if count2 != 0: - s += ', %d %s' % (count2, name2(count2)) + s += gettext(', %(number)d %(type)s') % {'number': count2, 'type': name2(count2)} return s def timeuntil(d, now=None): diff --git a/django/utils/translation/trans_real.py b/django/utils/translation/trans_real.py index 0c8dcd540f..293b4ef9cd 100644 --- a/django/utils/translation/trans_real.py +++ b/django/utils/translation/trans_real.py @@ -199,7 +199,7 @@ def deactivate(): will resolve against the default translation object, again. """ global _active - if _active.has_key(currentThread()): + if currentThread() in _active: del _active[currentThread()] def get_language(): diff --git a/django/views/debug.py b/django/views/debug.py index b49a98a864..2530350e26 100644 --- a/django/views/debug.py +++ b/django/views/debug.py @@ -90,11 +90,18 @@ def technical_500_response(request, exc_type, exc_value, tb): exc_type, exc_value, tb, template_info = get_template_exception_info(exc_type, exc_value, tb) frames = [] while tb is not None: + # support for __traceback_hide__ which is used by a few libraries + # to hide internal frames. + if tb.tb_frame.f_locals.get('__traceback_hide__'): + tb = tb.tb_next + continue filename = tb.tb_frame.f_code.co_filename function = tb.tb_frame.f_code.co_name lineno = tb.tb_lineno - 1 - pre_context_lineno, pre_context, context_line, post_context = _get_lines_from_file(filename, lineno, 7) - if pre_context_lineno: + loader = tb.tb_frame.f_globals.get('__loader__') + module_name = tb.tb_frame.f_globals.get('__name__') + pre_context_lineno, pre_context, context_line, post_context = _get_lines_from_file(filename, lineno, 7, loader, module_name) + if pre_context_lineno is not None: frames.append({ 'tb': tb, 'filename': filename, @@ -161,24 +168,35 @@ def empty_urlconf(request): }) return HttpResponseNotFound(t.render(c), mimetype='text/html') -def _get_lines_from_file(filename, lineno, context_lines): +def _get_lines_from_file(filename, lineno, context_lines, loader=None, module_name=None): """ Returns context_lines before and after lineno from file. Returns (pre_context_lineno, pre_context, context_line, post_context). """ - try: - source = open(filename).readlines() - lower_bound = max(0, lineno - context_lines) - upper_bound = lineno + context_lines - - pre_context = [line.strip('\n') for line in source[lower_bound:lineno]] - context_line = source[lineno].strip('\n') - post_context = [line.strip('\n') for line in source[lineno+1:upper_bound]] - - return lower_bound, pre_context, context_line, post_context - except (OSError, IOError): + source = None + if loader is not None: + source = loader.get_source(module_name).splitlines() + else: + try: + f = open(filename) + try: + source = f.readlines() + finally: + f.close() + except (OSError, IOError): + pass + if source is None: return None, [], None, [] + lower_bound = max(0, lineno - context_lines) + upper_bound = lineno + context_lines + + pre_context = [line.strip('\n') for line in source[lower_bound:lineno]] + context_line = source[lineno].strip('\n') + post_context = [line.strip('\n') for line in source[lineno+1:upper_bound]] + + return lower_bound, pre_context, context_line, post_context + # # Templates are embedded in the file so that we know the error handler will # always work even if the template loader is broken. @@ -314,7 +332,7 @@ TECHNICAL_500_TEMPLATE = """ Exception Location: - {{ lastframe.filename }} in {{ lastframe.function }}, line {{ lastframe.lineno }} + {{ lastframe.filename|escape }} in {{ lastframe.function|escape }}, line {{ lastframe.lineno }} @@ -361,7 +379,7 @@ TECHNICAL_500_TEMPLATE = """
                                  {% for frame in frames %}
                                • - {{ frame.filename }} in {{ frame.function }} + {{ frame.filename|escape }} in {{ frame.function|escape }} {% if frame.context_line %}
                                  diff --git a/django/views/generic/simple.py b/django/views/generic/simple.py index 355bd25ef8..69a494931e 100644 --- a/django/views/generic/simple.py +++ b/django/views/generic/simple.py @@ -1,8 +1,8 @@ from django.shortcuts import render_to_response -from django.template import RequestContext +from django.template import loader, RequestContext from django.http import HttpResponse, HttpResponsePermanentRedirect, HttpResponseGone -def direct_to_template(request, template, extra_context={}, **kwargs): +def direct_to_template(request, template, extra_context={}, mimetype=None, **kwargs): """ Render a given template with any extra URL parameters in the context as ``{{ params }}``. @@ -13,7 +13,9 @@ def direct_to_template(request, template, extra_context={}, **kwargs): dictionary[key] = value() else: dictionary[key] = value - return render_to_response(template, dictionary, context_instance=RequestContext(request)) + c = RequestContext(request, dictionary) + t = loader.get_template(template) + return HttpResponse(t.render(c), mimetype=mimetype) def redirect_to(request, url, **kwargs): """ diff --git a/django/views/i18n.py b/django/views/i18n.py index 0a19cfe986..0fec6b6c6f 100644 --- a/django/views/i18n.py +++ b/django/views/i18n.py @@ -97,7 +97,7 @@ def javascript_catalog(request, domain='djangojs', packages=None): deliver your JavaScript source from Django templates. """ if request.GET: - if request.GET.has_key('language'): + if 'language' in request.GET: if check_for_language(request.GET['language']): activate(request.GET['language']) if packages is None: @@ -136,7 +136,7 @@ def javascript_catalog(request, domain='djangojs', packages=None): t.update(catalog._catalog) src = [LibHead] plural = None - if t.has_key(''): + if '' in t: for l in t[''].split('\n'): if l.startswith('Plural-Forms:'): plural = l.split(':',1)[1].strip() @@ -155,7 +155,7 @@ def javascript_catalog(request, domain='djangojs', packages=None): if type(k) in (str, unicode): csrc.append("catalog['%s'] = '%s';\n" % (javascript_quote(k), javascript_quote(v))) elif type(k) == tuple: - if not pdict.has_key(k[0]): + if k[0] not in pdict: pdict[k[0]] = k[1] else: pdict[k[0]] = max(k[1], pdict[k[0]]) diff --git a/docs/add_ons.txt b/docs/add_ons.txt index b92ae0bd17..4f45d99d9a 100644 --- a/docs/add_ons.txt +++ b/docs/add_ons.txt @@ -24,7 +24,7 @@ admin The automatic Django administrative interface. For more information, see `Tutorial 2`_. -.. _Tutorial 2: ../tutorial2/ +.. _Tutorial 2: ../tutorial02/ auth ==== diff --git a/docs/api_stability.txt b/docs/api_stability.txt index 508336e0ef..cfaffeac6b 100644 --- a/docs/api_stability.txt +++ b/docs/api_stability.txt @@ -100,14 +100,14 @@ change: .. _caching: ../cache/ .. _custom template tags and libraries: ../templates_python/ -.. _database lookup: ../db_api/ -.. _django-admin utility: ../django_admin/ +.. _database lookup: ../db-api/ +.. _django-admin utility: ../django-admin/ .. _fastcgi integration: ../fastcgi/ .. _flatpages: ../flatpages/ .. _generic views: ../generic_views/ .. _internationalization: ../i18n/ .. _legacy database integration: ../legacy_databases/ -.. _model definition: ../model_api/ +.. _model definition: ../model-api/ .. _mod_python integration: ../modpython/ .. _redirects: ../redirects/ .. _request/response objects: ../request_response/ diff --git a/docs/authentication.txt b/docs/authentication.txt index aff336f67a..091a30a895 100644 --- a/docs/authentication.txt +++ b/docs/authentication.txt @@ -144,7 +144,7 @@ custom methods: Raises ``django.contrib.auth.models.SiteProfileNotAvailable`` if the current site doesn't allow profiles. -.. _Django model: ../model_api/ +.. _Django model: ../model-api/ .. _DEFAULT_FROM_EMAIL: ../settings/#default-from-email Manager functions @@ -204,9 +204,12 @@ The ``password`` attribute of a ``User`` object is a string in this format:: That's hashtype, salt and hash, separated by the dollar-sign character. -Hashtype is either ``sha1`` (default) or ``md5`` -- the algorithm used to -perform a one-way hash of the password. Salt is a random string used to salt -the raw password to create the hash. +Hashtype is either ``sha1`` (default), ``md5`` or ``crypt`` -- the algorithm +used to perform a one-way hash of the password. Salt is a random string used +to salt the raw password to create the hash. Note that the ``crypt`` method is +only supported on platforms that have the standard Python ``crypt`` module +available, and ``crypt`` support is only available in the Django development +version. For example:: @@ -387,14 +390,15 @@ introduced in Python 2.4:: ``login_required`` does the following: - * If the user isn't logged in, redirect to ``/accounts/login/``, passing - the current absolute URL in the query string as ``next``. For example: + * If the user isn't logged in, redirect to ``settings.LOGIN_URL`` + (``/accounts/login/`` by default), passing the current absolute URL + in the query string as ``next``. For example: ``/accounts/login/?next=/polls/3/``. * If the user is logged in, execute the view normally. The view code is free to assume the user is logged in. -Note that you'll need to map the appropriate Django view to ``/accounts/login/``. -To do this, add the following line to your URLconf:: +Note that you'll need to map the appropriate Django view to ``settings.LOGIN_URL``. +For example, using the defaults, add the following line to your URLconf:: (r'^accounts/login/$', 'django.contrib.auth.views.login'), @@ -405,9 +409,9 @@ Here's what ``django.contrib.auth.views.login`` does: * If called via ``POST``, it tries to log the user in. If login is successful, the view redirects to the URL specified in ``next``. If - ``next`` isn't provided, it redirects to ``/accounts/profile/`` (which is - currently hard-coded). If login isn't successful, it redisplays the login - form. + ``next`` isn't provided, it redirects to ``settings.LOGIN_REDIRECT_URL`` + (which defaults to ``/accounts/profile/``). If login isn't successful, + it redisplays the login form. It's your responsibility to provide the login form in a template called ``registration/login.html`` by default. This template gets passed three @@ -487,7 +491,7 @@ Logs a user out, then redirects to the login page. **Optional arguments:** * ``login_url``: The URL of the login page to redirect to. This - will default to ``/accounts/login/`` if not supplied. + will default to ``settings.LOGIN_URL`` if not supplied. ``django.contrib.auth.views.password_change`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -569,7 +573,7 @@ successful login. **Optional arguments:** * ``login_url``: The URL of the login page to redirect to. This - will default to ``/accounts/login/`` if not supplied. + will default to ``settings.LOGIN_URL`` if not supplied. Built-in manipulators --------------------- @@ -636,7 +640,7 @@ Note that ``user_passes_test`` does not automatically check that the ``User`` is not anonymous. ``user_passes_test()`` takes an optional ``login_url`` argument, which lets you -specify the URL for your login page (``/accounts/login/`` by default). +specify the URL for your login page (``settings.LOGIN_URL`` by default). Example in Python 2.3 syntax:: @@ -680,7 +684,7 @@ parameter. Example:: my_view = permission_required('polls.can_vote', login_url='/loginpage/')(my_view) As in the ``login_required`` decorator, ``login_url`` defaults to -``'/accounts/login/'``. +``settings.LOGIN_URL``. Limiting access to generic views -------------------------------- @@ -757,7 +761,7 @@ This example model creates three custom permissions:: The only thing this does is create those extra permissions when you run ``syncdb``. -.. _model Meta attribute: ../model_api/#meta-options +.. _model Meta attribute: ../model-api/#meta-options API reference ------------- diff --git a/docs/contributing.txt b/docs/contributing.txt index 1d2b635b76..d05c166b37 100644 --- a/docs/contributing.txt +++ b/docs/contributing.txt @@ -396,10 +396,11 @@ To run the tests, ``cd`` to the ``tests/`` directory and type:: ./runtests.py --settings=path.to.django.settings Yes, the unit tests need a settings module, but only for database connection -info -- the ``DATABASE_ENGINE``, ``DATABASE_USER`` and ``DATABASE_PASSWORD``. -You will also need a ``ROOT_URLCONF`` setting (its value is ignored; it just -needs to be present) and a ``SITE_ID`` setting (any integer value will do) in -order for all the tests to pass. +info -- the ``DATABASE_NAME`` (required, but will be ignored), +``DATABASE_ENGINE``, ``DATABASE_USER`` and ``DATABASE_PASSWORD`` settings. You +will also need a ``ROOT_URLCONF`` setting (its value is ignored; it just needs +to be present) and a ``SITE_ID`` setting (any integer value will do) in order +for all the tests to pass. The unit tests will not touch your existing databases; they create a new database, called ``django_test_db``, which is deleted when the tests are diff --git a/docs/databases.txt b/docs/databases.txt index 3545b58d47..b73f39843c 100644 --- a/docs/databases.txt +++ b/docs/databases.txt @@ -69,9 +69,12 @@ For now, InnoDB is probably your best choice. 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`_ is the Python interface to MySQL. Version 1.2.1p2 or later is +required for full MySQL support in Django. Earlier versions will not work with +the ``mysql`` backend. + +If you are trying to use an older version of MySQL and the ``mysql_old`` +backend, then 1.2.0 *might* work for you. .. _MySQLdb: http://sourceforge.net/projects/mysql-python diff --git a/docs/databrowse.txt b/docs/databrowse.txt new file mode 100644 index 0000000000..e9691cc879 --- /dev/null +++ b/docs/databrowse.txt @@ -0,0 +1,56 @@ +========== +Databrowse +========== + +Databrowse is a Django application that lets you browse your data. + +As the Django admin dynamically creates an admin interface by introspecting +your models, Databrowse dynamically creates a rich, browsable Web site by +introspecting your models. + +.. admonition:: Note + + Databrowse is **very** new and is currently under active development. It + may change substantially before the next Django release. + + With that said, it's easy to use, and it doesn't require writing any + code. So you can play around with it today, with very little investment in + time or coding. + +How to use Databrowse +===================== + + 1. Point Django at the default Databrowse templates. There are two ways to + do this: + + * Add ``'django.contrib.databrowse'`` to your ``INSTALLED_APPS`` + setting. This will work if your ``TEMPLATE_LOADERS`` setting includes + the ``app_directories`` template loader (which is the case by + default). See the `template loader docs`_ for more. + + * Otherwise, determine the full filesystem path to the + ``django/contrib/databrowse/templates`` directory, and add that + directory to your ``TEMPLATE_DIRS`` setting. + + 2. Register a number of models with the Databrowse site:: + + from django.contrib import databrowse + + databrowse.site.register(SomeModel) + databrowse.site.register(SomeOtherModel) + + Note that you should register the model *classes*, not instances. + + It doesn't matter where you put this, as long as it gets executed at + some point. A good place for it is in your URLconf file (``urls.py``). + + 3. Add the following line to your URLconf:: + + (r'^databrowse/(.*)', databrowse.site.root), + + The prefix doesn't matter -- you can use ``databrowse/`` or ``db/`` or + whatever you'd like. + + 4. Run the Django server and visit ``/databrowse/`` in your browser. + +.. _template loader docs: ../templates_python/#loader-types diff --git a/docs/db-api.txt b/docs/db-api.txt index 64db3def96..9d2f09daf3 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`: ../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: ../model_api/#autofield +.. _AutoField documentation: ../model-api/#autofield Explicitly specifying auto-primary-key values ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -112,7 +112,7 @@ the previous record in the database:: b4 = Blog(id=3, name='Not Cheddar', tagline='Anything but cheese.') b4.save() # Overrides the previous blog with ID=3! -See _`How Django knows to UPDATE vs. INSERT`, below, for the reason this +See `How Django knows to UPDATE vs. INSERT`_, below, for the reason this happens. Explicitly specifying auto-primary-key values is mostly useful for bulk-saving @@ -714,7 +714,7 @@ QuerySet methods that do not return QuerySets The following ``QuerySet`` methods evaluate the ``QuerySet`` and return something *other than* a ``QuerySet``. -These methods do not use a cache (see _`Caching and QuerySets` below). Rather, +These methods do not use a cache (see `Caching and QuerySets`_ below). Rather, they query the database each time they're called. ``get(**kwargs)`` @@ -906,8 +906,8 @@ The database API supports the following lookup types: exact ~~~~~ -Exact match. If the value provided for comparison is ``None``, it will -be interpreted as an SQL ``NULL`` (See isnull_ for more details). +Exact match. If the value provided for comparison is ``None``, it will +be interpreted as an SQL ``NULL`` (See isnull_ for more details). Examples:: @@ -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: ../model_api/#executing-custom-sql +.. _Executing custom SQL: ../model-api/#executing-custom-sql diff --git a/docs/distributions.txt b/docs/distributions.txt index 63206c535e..4ec265f93c 100644 --- a/docs/distributions.txt +++ b/docs/distributions.txt @@ -47,16 +47,18 @@ Fedora ------ A Django package is available for `Fedora Linux`_, in the "Fedora Extras" -repository. The `current Fedora package`_ is based on Django 0.95.1, and can be -installed by typing ``yum install Django``. +repository. The `current Fedora package`_ is based on Django 0.96, and can be +installed by typing ``yum install Django``. The previous link is for the i386 +binary. Users of other architectures should be able to use that as a starting +point to find their preferred version. .. _Fedora Linux: http://fedora.redhat.com/ -.. _current Fedora package: http://fedoraproject.org/extras/6/i386/repodata/repoview/Django-0-0.95.1-1.fc6.html +.. _current Fedora package: http://download.fedora.redhat.com/pub/fedora/linux/extras/6/i386/repoview/Django.html Gentoo ------ -A Django build is available for `Gentoo Linux`_, and is based on Django 0.95.1. +A Django build is available for `Gentoo Linux`_, and is based on Django 0.96. The `current Gentoo build`_ can be installed by typing ``emerge django``. .. _Gentoo Linux: http://www.gentoo.org/ diff --git a/docs/django-admin.txt b/docs/django-admin.txt index 388eaf98ac..cc2eadc365 100644 --- a/docs/django-admin.txt +++ b/docs/django-admin.txt @@ -29,6 +29,9 @@ Generally, when working on a single Django project, it's easier to use ``--settings`` command line option, if you need to switch between multiple Django settings files. +The command-line examples throughout this document use ``django-admin.py`` to +be consistent, but any example can use ``manage.py`` just as well. + Usage ===== @@ -58,7 +61,7 @@ Prints the admin-index template snippet for the given appnames. Use admin-index template snippets if you want to customize the look and feel of your admin's index page. See `Tutorial 2`_ for more information. -.. _Tutorial 2: ../tutorial2/ +.. _Tutorial 2: ../tutorial02/ createcachetable [tablename] ---------------------------- @@ -100,23 +103,24 @@ if you're ever curious to see the full list of defaults. dumpdata [appname appname ...] ------------------------------ -Output to standard output all data in the database associated with the named +Output to standard output all data in the database associated with the named application(s). By default, the database will be dumped in JSON format. If you want the output -to be in another format, use the ``--format`` option (e.g., ``format=xml``). -You may specify any Django serialization backend (including any user specified -serialization backends named in the ``SERIALIZATION_MODULES`` setting). +to be in another format, use the ``--format`` option (e.g., ``format=xml``). +You may specify any Django serialization backend (including any user specified +serialization backends named in the ``SERIALIZATION_MODULES`` setting). The +``--indent`` option can be used to pretty-print the output. If no application name is provided, all installed applications will be dumped. -The output of ``dumpdata`` can be used as input for ``loaddata``. +The output of ``dumpdata`` can be used as input for ``loaddata``. flush ----- -Return the database to the state it was in immediately after syncdb was -executed. This means that all data will be removed from the database, any +Return the database to the state it was in immediately after syncdb was +executed. This means that all data will be removed from the database, any post-synchronization handlers will be re-executed, and the ``initial_data`` fixture will be re-installed. @@ -178,37 +182,37 @@ Django will search in three locations for fixtures: 3. In the literal path named by the fixture Django will load any and all fixtures it finds in these locations that match -the provided fixture names. +the provided fixture names. -If the named fixture has a file extension, only fixtures of that type +If the named fixture has a file extension, only fixtures of that type will be loaded. For example:: django-admin.py loaddata mydata.json - -would only load JSON fixtures called ``mydata``. The fixture extension -must correspond to the registered name of a serializer (e.g., ``json`` or + +would only load JSON fixtures called ``mydata``. The fixture extension +must correspond to the registered name of a serializer (e.g., ``json`` or ``xml``). -If you omit the extension, Django will search all available fixture types +If you omit the extension, Django will search all available fixture types for a matching fixture. For example:: django-admin.py loaddata mydata - + would look for any fixture of any fixture type called ``mydata``. If a fixture directory contained ``mydata.json``, that fixture would be loaded -as a JSON fixture. However, if two fixtures with the same name but different -fixture type are discovered (for example, if ``mydata.json`` and -``mydata.xml`` were found in the same fixture directory), fixture -installation will be aborted, and any data installed in the call to +as a JSON fixture. However, if two fixtures with the same name but different +fixture type are discovered (for example, if ``mydata.json`` and +``mydata.xml`` were found in the same fixture directory), fixture +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 +The fixtures that are named can include directory components. These directories will be included in the search path. For example:: django-admin.py loaddata foo/bar/mydata.json - -would search ``/fixtures/foo/bar/mydata.json`` for each installed -application, ``/foo/bar/mydata.json`` for each directory in + +would search ``/fixtures/foo/bar/mydata.json`` for each installed +application, ``/foo/bar/mydata.json`` for each directory in ``FIXTURE_DIRS``, and the literal path ``foo/bar/mydata.json``. Note that the order in which fixture files are processed is undefined. However, @@ -217,16 +221,18 @@ one fixture can reference data in another fixture. If the database backend supports row-level constraints, these constraints will be checked at the end of the transaction. +The ``dumpdata`` command can be used to generate input for ``loaddata``. + .. admonition:: MySQL and Fixtures - Unfortunately, MySQL isn't capable of completely supporting all the + Unfortunately, MySQL isn't capable of completely supporting all the features of Django fixtures. If you use MyISAM tables, MySQL doesn't - support transactions or constraints, so you won't get a rollback if - multiple transaction files are found, or validation of fixture data. - If you use InnoDB tables, you won't be able to have any forward - references in your data files - MySQL doesn't provide a mechanism to - defer checking of row constraints until a transaction is committed. - + support transactions or constraints, so you won't get a rollback if + multiple transaction files are found, or validation of fixture data. + If you use InnoDB tables, you won't be able to have any forward + references in your data files - MySQL doesn't provide a mechanism to + defer checking of row constraints until a transaction is committed. + reset [appname appname ...] --------------------------- Executes the equivalent of ``sqlreset`` for the given appnames. @@ -326,7 +332,7 @@ sqlall [appname appname ...] Prints the CREATE TABLE and initial-data SQL statements for the given appnames. -Refer to the description of ``sqlinitialdata`` for an explanation of how to +Refer to the description of ``sqlcustom`` for an explanation of how to specify initial data. sqlclear [appname appname ...] @@ -397,8 +403,8 @@ this command to install the default apps. If you're installing the ``django.contrib.auth`` application, ``syncdb`` will give you the option of creating a superuser immediately. -``syncdb`` will also search for and install any fixture named ``initial_data``. -See the documentation for ``loaddata`` for details on the specification of +``syncdb`` will also search for and install any fixture named ``initial_data``. +See the documentation for ``loaddata`` for details on the specification of fixture data files. test @@ -471,7 +477,7 @@ Example usage:: django-admin.py dumpdata --indent=4 -Specifies the number of spaces that will be used for indentation when +Specifies the number of spaces that will be used for indentation when pretty-printing output. By default, output will *not* be pretty-printed. Pretty-printing will only be enabled if the indent option is provided. @@ -512,7 +518,8 @@ and `2` is verbose output. ------------ Example usage:: - django-admin.py manage.py --adminmedia=/tmp/new-admin-style/ + + django-admin.py --adminmedia=/tmp/new-admin-style/ Tells Django where to find the various CSS and JavaScript files for the admin interface when running the development server. Normally these files are served diff --git a/docs/documentation.txt b/docs/documentation.txt index e72dd47ba1..decb066fa1 100644 --- a/docs/documentation.txt +++ b/docs/documentation.txt @@ -94,12 +94,10 @@ Formatting The text documentation is written in ReST (ReStructured Text) format. That means it's easy to read but is also formatted in a way that makes it easy to -convert into other formats, such as HTML. If you're interested, the script that -converts the ReST text docs into djangoproject.com's HTML lives at -`djangoproject.com/django_website/apps/docs/parts/build_documentation.py`_ in -the Django Subversion repository. +convert into other formats, such as HTML. If you have the `reStructuredText`_ +library installed, you can use ``rst2html`` to generate your own HTML files. -.. _djangoproject.com/django_website/apps/docs/parts/build_documentation.py: http://code.djangoproject.com/browser/djangoproject.com/django_website/apps/docs/parts/build_documentation.py +.. _reStructuredText: http://docutils.sourceforge.net/rst.html Differences between versions ============================ diff --git a/docs/email.txt b/docs/email.txt index 1f4ce4ef42..66948e5294 100644 --- a/docs/email.txt +++ b/docs/email.txt @@ -19,13 +19,23 @@ In two lines:: send_mail('Subject here', 'Here is the message.', 'from@example.com', ['to@example.com'], fail_silently=False) - + +Mail is sent using the SMTP host and port specified in the `EMAIL_HOST`_ and +`EMAIL_PORT`_ settings. The `EMAIL_HOST_USER`_ and `EMAIL_HOST_PASSWORD`_ +settings, if set, are used to authenticate to the SMTP server, and the +`EMAIL_USE_TLS`_ setting controls whether a secure connection is used. + .. note:: - The character set of email sent with ``django.core.mail`` will be set to + The character set of e-mail sent with ``django.core.mail`` will be set to the value of your `DEFAULT_CHARSET setting`_. - -.. _DEFAULT_CHARSET setting: ../settings/#DEFAULT_CHARSET + +.. _DEFAULT_CHARSET setting: ../settings/#default-charset +.. _EMAIL_HOST: ../settings/#email-host +.. _EMAIL_PORT: ../settings/#email-port +.. _EMAIL_HOST_USER: ../settings/#email-host-user +.. _EMAIL_HOST_PASSWORD: ../settings/#email-host-password +.. _EMAIL_USE_TLS: ../settings/#email-use-tls send_mail() =========== @@ -174,3 +184,72 @@ from the request's POST data, sends that to admin@example.com and redirects to return HttpResponse('Make sure all fields are entered and valid.') .. _Header injection: http://securephp.damonkohler.com/index.php/Email_Injection + +The EmailMessage and SMTPConnection classes +=========================================== + +**New in Django development version** + +Django's ``send_mail()`` and ``send_mass_mail()`` functions are actually thin +wrappers that make use of the ``EmailMessage`` and ``SMTPConnection`` classes +in ``django.core.mail``. If you ever need to customize the way Django sends +e-mail, you can subclass these two classes to suit your needs. + +.. note:: + Not all features of the ``EmailMessage`` class are available through the + ``send_mail()`` and related wrapper functions. If you wish to use advanced + features, such as BCC'ed recipients or multi-part e-mail, you'll need to + create ``EmailMessage`` instances directly. + +In general, ``EmailMessage`` is responsible for creating the e-mail message +itself. ``SMTPConnection`` is responsible for the network connection side of +the operation. This means you can reuse the same connection (an +``SMTPConnection`` instance) for multiple messages. + +The ``EmailMessage`` class is initialized as follows:: + + email = EmailMessage(subject, body, from_email, to, bcc, connection) + +All of these parameters are optional. If ``from_email`` is omitted, the value +from ``settings.DEFAULT_FROM_EMAIL`` is used. Both the ``to`` and ``bcc`` +parameters are lists of addresses, as strings. + +For example:: + + email = EmailMessage('Hello', 'Body goes here', 'from@example.com', + ['to1@example.com', 'to2@example.com'], + ['bcc@example.com']) + +The class has the following methods: + + * ``send()`` sends the message, using either the connection that is + specified in the ``connection`` attribute, or creating a new connection + if none already exists. + + * ``message()`` constructs a ``django.core.mail.SafeMIMEText`` object (a + sub-class of Python's ``email.MIMEText.MIMEText`` class) holding the + message to be sent. If you ever need to extend the `EmailMessage` class, + you'll probably want to override this method to put the content you wish + into the MIME object. + + * ``recipients()`` returns a list of all the recipients of the message, + whether they're recorded in the ``to`` or ``bcc`` attributes. This is + another method you might need to override when sub-classing, because the + SMTP server needs to be told the full list of recipients when the message + is sent. If you add another way to specify recipients in your class, they + need to be returned from this method as well. + +The ``SMTPConnection`` class is initialized with the host, port, username and +password for the SMTP server. If you don't specify one or more of those +options, they are read from your settings file. + +If you're sending lots of messages at once, the ``send_messages()`` method of +the ``SMTPConnection`` class is useful. It takes a list of ``EmailMessage`` +instances (or subclasses) and sends them over a single connection. For example, +if you have a function called ``get_notification_email()`` that returns a +list of ``EmailMessage`` objects representing some periodic e-mail you wish to +send out, you could send this with:: + + connection = SMTPConnection() # Use default settings for connection + messages = get_notification_email() + connection.send_messages(messages) diff --git a/docs/faq.txt b/docs/faq.txt index 202b73c6be..bdd8c5360e 100644 --- a/docs/faq.txt +++ b/docs/faq.txt @@ -278,7 +278,7 @@ How do I get started? .. _`Download the code`: http://www.djangoproject.com/download/ .. _`installation guide`: ../install/ -.. _tutorial: ../tutorial1/ +.. _tutorial: ../tutorial01/ .. _documentation: ../ .. _ask questions: http://www.djangoproject.com/community/ @@ -512,7 +512,7 @@ type, create an initial data file and put something like this in it:: As explained in the `SQL initial data file`_ documentation, this SQL file can contain arbitrary SQL, so you can make any sorts of changes you need to make. -.. _SQL initial data file: ../model_api/#providing-initial-sql-data +.. _SQL initial data file: ../model-api/#providing-initial-sql-data Why is Django leaking memory? ----------------------------- diff --git a/docs/flatpages.txt b/docs/flatpages.txt index cb910e812d..1422f16b6b 100644 --- a/docs/flatpages.txt +++ b/docs/flatpages.txt @@ -84,9 +84,9 @@ Flatpages are represented by a standard `Django model`_, which lives in `django/contrib/flatpages/models.py`_. You can access flatpage objects via the `Django database API`_. -.. _Django model: ../model_api/ +.. _Django model: ../model-api/ .. _django/contrib/flatpages/models.py: http://code.djangoproject.com/browser/django/trunk/django/contrib/flatpages/models.py -.. _Django database API: ../db_api/ +.. _Django database API: ../db-api/ Flatpage templates ================== diff --git a/docs/forms.txt b/docs/forms.txt index ce1010235f..329e84a1b1 100644 --- a/docs/forms.txt +++ b/docs/forms.txt @@ -517,7 +517,7 @@ to put punctuation at the end of your validation messages. When are validators called? --------------------------- -After a form has been submitted, Django validates each field in turn. First, +After a form has been submitted, Django validates each field in turn. First, if the field is required, Django checks that it is present and non-empty. Then, if that test passes *and the form submission contained data* for that field, all the validators for that field are called in turn. The emphasized portion in the @@ -615,15 +615,19 @@ fails. If no message is passed in, a default message is used. ``other_value``, then the validators in ``validator_list`` are all run against the current field. +``RequiredIfOtherFieldGiven`` + Takes a field name of the current field is only required if the other + field has a value. + +``RequiredIfOtherFieldsGiven`` + Similar to ``RequiredIfOtherFieldGiven``, except that it takes a list of + field names and if any one of the supplied fields has a value provided, + the current field being validated is required. + ``RequiredIfOtherFieldNotGiven`` Takes the name of the other field and this field is only required if the other field has no value. -``RequiredIfOtherFieldsNotGiven`` - Similar to ``RequiredIfOtherFieldNotGiven``, except that it takes a list - of field names and if any one of the supplied fields does not have a value - provided, the field being validated is required. - ``RequiredIfOtherFieldEquals`` and ``RequiredIfOtherFieldDoesNotEqual`` Each of these validator classes takes a field name and a value (in that order). If the given field does (or does not have, in the latter case) the @@ -650,8 +654,8 @@ fails. If no message is passed in, a default message is used. ``NumberIsInRange`` Takes two boundary numbers, ``lower`` and ``upper``, and checks that the field is greater than ``lower`` (if given) and less than ``upper`` (if - given). - + given). + Both checks are inclusive. That is, ``NumberIsInRange(10, 20)`` will allow values of both 10 and 20. This validator only checks numeric values (e.g., float and integer values). @@ -691,5 +695,5 @@ fails. If no message is passed in, a default message is used. document for more details). .. _`generic views`: ../generic_views/ -.. _`models API`: ../model_api/ +.. _`models API`: ../model-api/ .. _settings: ../settings/ diff --git a/docs/generic_views.txt b/docs/generic_views.txt index 0496a58691..bb5f7320f6 100644 --- a/docs/generic_views.txt +++ b/docs/generic_views.txt @@ -44,7 +44,7 @@ simple weblog app that drives the blog on djangoproject.com:: (r'^(?P\d{4})/(?P[a-z]{3})/(?P\w{1,2})/$', 'archive_day', info_dict), (r'^(?P\d{4})/(?P[a-z]{3})/$', 'archive_month', info_dict), (r'^(?P\d{4})/$', 'archive_year', info_dict), - (r'^/?$', 'archive_index', info_dict), + (r'^$', 'archive_index', info_dict), ) As you can see, this URLconf defines a few options in ``info_dict``. @@ -71,7 +71,7 @@ are first evaluated, so if you want to pass in a QuerySet via ``extra_context`` that is always fresh you need to wrap it in a function or lambda that returns the QuerySet. -.. _database API docs: ../db_api/ +.. _database API docs: ../db-api/ "Simple" generic views ====================== diff --git a/docs/i18n.txt b/docs/i18n.txt index 4a05e53ddf..1d7a0063b2 100644 --- a/docs/i18n.txt +++ b/docs/i18n.txt @@ -175,7 +175,7 @@ class, though:: verbose_name = _('my thing') verbose_name_plural = _('mythings') -.. _Django models: ../model_api/ +.. _Django models: ../model-api/ Pluralization ~~~~~~~~~~~~~ @@ -310,7 +310,7 @@ To create or update a message file, run this command:: ...where ``de`` is the language code for the message file you want to create. The language code, in this case, is in locale format. For example, it's -``pt_BR`` for Brazilian and ``de_AT`` for Austrian German. +``pt_BR`` for Brazilian Portugese and ``de_AT`` for Austrian German. The script should be run from one of three places: @@ -463,8 +463,8 @@ following this algorithm: Notes: * In each of these places, the language preference is expected to be in the - standard language format, as a string. For example, Brazilian is - ``pt-br``. + standard language format, as a string. For example, Brazilian Portugese + is ``pt-br``. * If a base language is available but the sublanguage specified is not, Django uses the base language. For example, if a user specifies ``de-at`` (Austrian German) but Django only has ``de`` available, Django uses diff --git a/docs/install.txt b/docs/install.txt index dbbde93f83..6be52aab0d 100644 --- a/docs/install.txt +++ b/docs/install.txt @@ -45,19 +45,20 @@ Get your database running ========================= If you plan to use Django's database API functionality, you'll need to -make sure a database server is running. Django works with PostgreSQL_ -(recommended), MySQL_ and SQLite_. +make sure a database server is running. Django works with PostgreSQL_, +MySQL_ and SQLite_. Additionally, you'll need to make sure your Python database bindings are installed. -* If you're using PostgreSQL, you'll need the psycopg_ package (version 2 is - recommended with ``postgresql_psycopg2`` backend, version 1.1 works also with the - ``postgresql``` backend). - +* If you're using PostgreSQL, you'll need the psycopg_ package. Django supports + both version 1 and 2. (When you configure Django's database layer, specify + either ``postgresql`` [for version 1] or ``postgresql_psycopg2`` [for version 2].) + If you're on Windows, check out the unofficial `compiled Windows version`_. - + * If you're using MySQL, you'll need MySQLdb_, version 1.2.1p2 or higher. + You will also want to read the database-specific notes for the `MySQL backend`_. * If you're using SQLite, you'll need pysqlite_. Use version 2.0.3 or higher. @@ -69,6 +70,34 @@ installed. .. _MySQLdb: http://sourceforge.net/projects/mysql-python .. _SQLite: http://www.sqlite.org/ .. _pysqlite: http://initd.org/tracker/pysqlite +.. _MySQL backend: ../databases/ + +Remove any old versions of Django +================================= + +If you are upgrading your installation of Django from a previous version, +you will need to uninstall the old Django version before installing the +new version. + +If you installed Django using ``setup.py install``, uninstalling +is as simple as deleting the ``django`` directory from your Python +``site-packages``. + +If you installed Django from a Python Egg, remove the Django ``.egg`` file, +and remove the reference to the egg in the file named ``easy-install.pth``. +This file should also be located in your ``site-packages`` directory. + +.. admonition:: Where are my ``site-packages`` stored? + + The location of the ``site-packages`` directory depends on the operating + system, and the location in which Python was installed. However, the + following locations are common: + + * If you're using Linux: ``/usr/lib/python2.X/site-packages`` + + * If you're using Windows: ``C:\Python2.X\lib\site-packages`` + + * If you're using MacOSX: ``/Library/Python2.X/site-packages`` Install the Django code ======================= diff --git a/docs/legacy_databases.txt b/docs/legacy_databases.txt index 8230c11f61..ca3927e52f 100644 --- a/docs/legacy_databases.txt +++ b/docs/legacy_databases.txt @@ -9,7 +9,7 @@ utilities to automate as much of this process as possible. This document assumes you know the Django basics, as covered in the `official tutorial`_. -.. _official tutorial: ../tutorial1/ +.. _official tutorial: ../tutorial01/ Give Django your database parameters ==================================== @@ -39,11 +39,11 @@ Auto-generate the models Django comes with a utility that can create models by introspecting an existing database. You can view the output by running this command:: - django-admin.py inspectdb --settings=path.to.settings + python manage.py inspectdb Save this as a file by using standard Unix output redirection:: - django-admin.py inspectdb --settings=path.to.settings > models.py + python manage.py inspectdb > models.py This feature is meant as a shortcut, not as definitive model generation. See the `django-admin.py documentation`_ for more information. @@ -52,7 +52,7 @@ Once you've cleaned up your models, name the file ``models.py`` and put it in the Python package that holds your app. Then add the app to your ``INSTALLED_APPS`` setting. -.. _django-admin.py documentation: ../django_admin/ +.. _django-admin.py documentation: ../django-admin/ Install the core Django tables ============================== @@ -60,7 +60,7 @@ Install the core Django tables Next, run the ``manage.py syncdb`` command to install any extra needed database records such as admin permissions and content types:: - django-admin.py init --settings=path.to.settings + python manage.py syncdb See whether it worked ===================== diff --git a/docs/model-api.txt b/docs/model-api.txt index a03ed09eb2..961269aebd 100644 --- a/docs/model-api.txt +++ b/docs/model-api.txt @@ -21,7 +21,7 @@ A companion to this document is the `official repository of model examples`_. (In the Django source distribution, these examples are in the ``tests/modeltests`` directory.) -.. _Database API reference: http://www.djangoproject.com/documentation/db_api/ +.. _Database API reference: ../db-api/ .. _official repository of model examples: http://www.djangoproject.com/documentation/models/ Quick example @@ -57,7 +57,7 @@ Some technical notes: syntax, but it's worth noting Django uses SQL tailored to the database backend specified in your `settings file`_. -.. _settings file: http://www.djangoproject.com/documentation/settings/ +.. _settings file: ../settings/ Fields ====== @@ -194,14 +194,23 @@ This doesn't accept ``maxlength``; its ``maxlength`` is automatically set to ``FileField`` ~~~~~~~~~~~~~ -A file-upload field. +A file-upload field. Has one **required** argument: -Has an extra required argument, ``upload_to``, a local filesystem path to -which files should be upload. This path may contain `strftime formatting`_, -which will be replaced by the date/time of the file upload (so that -uploaded files don't fill up the given directory). + ====================== =================================================== + Argument Description + ====================== =================================================== + ``upload_to`` A local filesystem path that will be appended to + your ``MEDIA_ROOT`` setting to determine the + output of the ``get__url()`` helper + function. + ====================== =================================================== -The admin represents this as an ```` (a file-upload widget). +This path may contain `strftime formatting`_, which will be replaced by the +date/time of the file upload (so that uploaded files don't fill up the given +directory). + +The admin represents this field as an ```` (a file-upload +widget). Using a ``FileField`` or an ``ImageField`` (see below) in a model takes a few steps: @@ -246,7 +255,7 @@ visiting its URL on your site. Don't allow that. A field whose choices are limited to the filenames in a certain directory on the filesystem. Has three special arguments, of which the first is -required: +**required**: ====================== =================================================== Argument Description @@ -450,7 +459,7 @@ string, not ``NULL``. ``blank`` ~~~~~~~~~ -If ``True``, the field is allowed to be blank. +If ``True``, the field is allowed to be blank. Default is ``False``. Note that this is different than ``null``. ``null`` is purely database-related, whereas ``blank`` is validation-related. If a field has @@ -501,7 +510,7 @@ For each model field that has ``choices`` set, Django will add a method to retrieve the human-readable name for the field's current value. See `get_FOO_display`_ in the database API documentation. -.. _get_FOO_display: ../db_api/#get-foo-display +.. _get_FOO_display: ../db-api/#get-foo-display Finally, note that choices can be any iterable object -- not necessarily a list or tuple. This lets you construct choices dynamically. But if you find @@ -626,7 +635,7 @@ that takes the parameters ``field_data, all_data`` and raises Django comes with quite a few validators. They're in ``django.core.validators``. -.. _validator docs: http://www.djangoproject.com/documentation/forms/#validators +.. _validator docs: ../forms/#validators Verbose field names ------------------- @@ -734,10 +743,10 @@ relationship should work. All are optional: ``limit_choices_to`` A dictionary of lookup arguments and values (see the `Database API reference`_) that limit the available admin choices for this object. Use this - with ``models.LazyDate`` to limit choices of objects - by date. For example:: + with functions from the Python ``datetime`` module + to limit choices of objects by date. For example:: - limit_choices_to = {'pub_date__lte': models.LazyDate()} + limit_choices_to = {'pub_date__lte': datetime.now} only allows the choice of related objects with a ``pub_date`` before the current date/time to be @@ -792,8 +801,8 @@ relationship should work. All are optional: the related object. ======================= ============================================================ -.. _`Database API reference`: http://www.djangoproject.com/documentation/db_api/ -.. _related objects documentation: http://www.djangoproject.com/documentation/db_api/#related-objects +.. _`Database API reference`: ../db-api/ +.. _related objects documentation: ../db-api/#related-objects Many-to-many relationships ~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -963,7 +972,7 @@ Example:: See the `docs for latest()`_ for more. -.. _docs for latest(): http://www.djangoproject.com/documentation/db_api/#latest-field-name-none +.. _docs for latest(): ../db-api/#latest-field-name-none ``order_with_respect_to`` ------------------------- @@ -1397,7 +1406,7 @@ if one of the ``list_display`` fields is a ``ForeignKey``. For more on ``select_related()``, see `the select_related() docs`_. -.. _the select_related() docs: http://www.djangoproject.com/documentation/db_api/#select-related +.. _the select_related() docs: ../db-api/#select-related ``ordering`` ------------ @@ -1502,7 +1511,7 @@ The way ``Manager`` classes work is documented in the `Retrieving objects`_ section of the database API docs, but this section specifically touches on model options that customize ``Manager`` behavior. -.. _Retrieving objects: http://www.djangoproject.com/documentation/db_api/#retrieving-objects +.. _Retrieving objects: ../db-api/#retrieving-objects Manager names ------------- @@ -1825,7 +1834,7 @@ just the ``where``, ``tables`` and ``params`` arguments to the standard lookup API. See `Other lookup options`_. .. _Python DB-API: http://www.python.org/peps/pep-0249.html -.. _Other lookup options: http://www.djangoproject.com/documentation/db_api/#extra-params-select-where-tables +.. _Other lookup options: ../db-api/#extra-params-select-where-tables Overriding default model methods -------------------------------- @@ -1858,7 +1867,7 @@ You can also prevent saving:: else: super(Blog, self).save() # Call the "real" save() method. -.. _database API docs: http://www.djangoproject.com/documentation/db_api/ +.. _database API docs: ../db-api/ Models across files =================== @@ -1915,7 +1924,7 @@ Each SQL file, if given, is expected to contain valid SQL. The SQL files are piped directly into the database after all of the models' table-creation statements have been executed. -The SQL files are read by the ``sqlinitialdata``, ``sqlreset``, ``sqlall`` and +The SQL files are read by the ``sqlcustom``, ``sqlreset``, ``sqlall`` and ``reset`` commands in ``manage.py``. Refer to the `manage.py documentation`_ for more information. @@ -1924,7 +1933,7 @@ order in which they're executed. The only thing you can assume is that, by the time your custom data files are executed, all the database tables already will have been created. -.. _`manage.py documentation`: http://www.djangoproject.com/documentation/django_admin/#sqlinitialdata-appname-appname +.. _`manage.py documentation`: ../django-admin/#sqlcustom-appname-appname Database-backend-specific SQL data ---------------------------------- diff --git a/docs/overview.txt b/docs/overview.txt index 35af75bf05..7b3559663a 100644 --- a/docs/overview.txt +++ b/docs/overview.txt @@ -297,5 +297,5 @@ The next obvious steps are for you to `download Django`_, read `the tutorial`_ and join `the community`_. Thanks for your interest! .. _download Django: http://www.djangoproject.com/download/ -.. _the tutorial: http://www.djangoproject.com/documentation/tutorial1/ +.. _the tutorial: http://www.djangoproject.com/documentation/tutorial01/ .. _the community: http://www.djangoproject.com/community/ diff --git a/docs/redirects.txt b/docs/redirects.txt index 5f84f28097..4df60d473f 100644 --- a/docs/redirects.txt +++ b/docs/redirects.txt @@ -66,6 +66,6 @@ Redirects are represented by a standard `Django model`_, which lives in `django/contrib/redirects/models.py`_. You can access redirect objects via the `Django database API`_. -.. _Django model: ../model_api/ +.. _Django model: ../model-api/ .. _django/contrib/redirects/models.py: http://code.djangoproject.com/browser/django/trunk/django/contrib/redirects/models.py -.. _Django database API: ../db_api/ +.. _Django database API: ../db-api/ diff --git a/docs/request_response.txt b/docs/request_response.txt index c0272461ca..0b985d563b 100644 --- a/docs/request_response.txt +++ b/docs/request_response.txt @@ -93,6 +93,7 @@ All attributes except ``session`` should be considered read-only. * ``CONTENT_TYPE`` * ``HTTP_ACCEPT_ENCODING`` * ``HTTP_ACCEPT_LANGUAGE`` + * ``HTTP_HOST`` -- The HTTP Host header sent by the client. * ``HTTP_REFERER`` -- The referring page, if any. * ``HTTP_USER_AGENT`` -- The client's user-agent string. * ``QUERY_STRING`` -- The query string, as a single (unparsed) string. diff --git a/docs/serialization.txt b/docs/serialization.txt index 48ab46f0f9..3216cb061e 100644 --- a/docs/serialization.txt +++ b/docs/serialization.txt @@ -27,7 +27,7 @@ data to (see `Serialization formats`_) and a QuerySet_ to serialize. (Actually, the second argument can be any iterator that yields Django objects, but it'll almost always be a QuerySet). -.. _QuerySet: ../db_api/#retrieving-objects +.. _QuerySet: ../db-api/#retrieving-objects You can also use a serializer object directly:: @@ -109,7 +109,7 @@ serializer, you must pass ``ensure_ascii=False`` as a parameter to the For example:: - json_serializer = serializers.get_serializer("json") + json_serializer = serializers.get_serializer("json")() json_serializer.serialize(queryset, ensure_ascii=False, stream=response) Writing custom serializers diff --git a/docs/sessions.txt b/docs/sessions.txt index 55fbc2c3da..c7124ba703 100644 --- a/docs/sessions.txt +++ b/docs/sessions.txt @@ -107,7 +107,7 @@ posts a comment. It doesn't let a user post a comment more than once:: This simplistic view logs in a "member" of the site:: def login(request): - m = members.get_object(username__exact=request.POST['username']) + m = Member.objects.get(username=request.POST['username']) if m.password == request.POST['password']: request.session['member_id'] = m.id return HttpResponse("You're logged in.") diff --git a/docs/settings.txt b/docs/settings.txt index 63b5cceef9..72c6e4ce54 100644 --- a/docs/settings.txt +++ b/docs/settings.txt @@ -59,7 +59,7 @@ Use the ``--settings`` command-line argument to specify the settings manually:: django-admin.py runserver --settings=mysite.settings -.. _django-admin.py: ../django_admin/ +.. _django-admin.py: ../django-admin/ On the server (mod_python) -------------------------- @@ -102,7 +102,7 @@ between the current settings file and Django's default settings. For more, see the `diffsettings documentation`_. -.. _diffsettings documentation: ../django_admin/#diffsettings +.. _diffsettings documentation: ../django-admin/#diffsettings Using settings in Python code ============================= @@ -395,8 +395,10 @@ EMAIL_HOST_PASSWORD Default: ``''`` (Empty string) -Username to use for the SMTP server defined in ``EMAIL_HOST``. If empty, -Django won't attempt authentication. +Password to use for the SMTP server defined in ``EMAIL_HOST``. This setting is +used in conjunction with ``EMAIL_HOST_USER`` when authenticating to the SMTP +server. If either of these settings is empty, Django won't attempt +authenticaion. See also ``EMAIL_HOST_USER``. @@ -426,6 +428,15 @@ Subject-line prefix for e-mail messages sent with ``django.core.mail.mail_admins or ``django.core.mail.mail_managers``. You'll probably want to include the trailing space. +EMAIL_USE_TLS +------------- + +**New in Django development version** + +Default: ``False`` + +Whether to use a TLS (secure) connection when talking to the SMTP server. + FIXTURE_DIRS ------------- @@ -462,7 +473,7 @@ A tuple of strings designating all applications that are enabled in this Django installation. Each string should be a full Python path to a Python package that contains a Django application, as created by `django-admin.py startapp`_. -.. _django-admin.py startapp: ../django_admin/#startapp-appname +.. _django-admin.py startapp: ../django-admin/#startapp-appname INTERNAL_IPS ------------ @@ -498,44 +509,17 @@ in standard language format. For example, U.S. English is ``"en-us"``. See the LANGUAGES --------- -Default: A tuple of all available languages. Currently, this is:: +Default: A tuple of all available languages. This list is continually growing +and including a copy here would inevitably become rapidly out of date. You can +see the current list of translated languages by looking in +``django/conf/global_settings.py`` (or view the `online source`_). - LANGUAGES = ( - ('ar', _('Arabic')), - ('bn', _('Bengali')), - ('cs', _('Czech')), - ('cy', _('Welsh')), - ('da', _('Danish')), - ('de', _('German')), - ('el', _('Greek')), - ('en', _('English')), - ('es', _('Spanish')), - ('es_AR', _('Argentinean Spanish')), - ('fr', _('French')), - ('gl', _('Galician')), - ('hu', _('Hungarian')), - ('he', _('Hebrew')), - ('is', _('Icelandic')), - ('it', _('Italian')), - ('ja', _('Japanese')), - ('nl', _('Dutch')), - ('no', _('Norwegian')), - ('pt-br', _('Brazilian')), - ('ro', _('Romanian')), - ('ru', _('Russian')), - ('sk', _('Slovak')), - ('sl', _('Slovenian')), - ('sr', _('Serbian')), - ('sv', _('Swedish')), - ('ta', _('Tamil')), - ('uk', _('Ukrainian')), - ('zh-cn', _('Simplified Chinese')), - ('zh-tw', _('Traditional Chinese')), - ) +.. _online source: http://code.djangoproject.com/browser/django/trunk/django/conf/global_settings.py -A tuple of two-tuples in the format (language code, language name). This -specifies which languages are available for language selection. See the -`internationalization docs`_ for details. +The list is a tuple of two-tuples in the format (language code, language +name) -- for example, ``('ja', 'Japanese')``. This specifies which languages +are available for language selection. See the `internationalization docs`_ for +details. Generally, the default value should suffice. Only set this setting if you want to restrict language selection to a subset of the Django-provided languages. @@ -562,6 +546,37 @@ strings for translation, but the translation won't happen at runtime -- so you'll have to remember to wrap the languages in the *real* ``gettext()`` in any code that uses ``LANGUAGES`` at runtime. +LOGIN_REDIRECT_URL +------------------ + +**New in Django development version** + +Default: ``'/accounts/profile/'`` + +The URL where requests are redirected after login when the +``contrib.auth.login`` view gets no ``next`` parameter. + +This is used by the `@login_required`_ decorator, for example. + +LOGIN_URL +--------- + +**New in Django development version** + +Default: ``'/accounts/login/'`` + +The URL where requests are redirected for login, specially when using the +`@login_required`_ decorator. + +LOGOUT_URL +---------- + +**New in Django development version** + +Default: ``'/accounts/logout/'`` + +LOGIN_URL counterpart. + MANAGERS -------- @@ -874,7 +889,7 @@ Default: ``Django/ (http://www.djangoproject.com/)`` The string to use as the ``User-Agent`` header when checking to see if URLs exist (see the ``verify_exists`` option on URLField_). -.. _URLField: ../model_api/#urlfield +.. _URLField: ../model-api/#urlfield USE_ETAGS --------- @@ -1012,6 +1027,8 @@ Also, it's an error to call ``configure()`` more than once, or to call It boils down to this: Use exactly one of either ``configure()`` or ``DJANGO_SETTINGS_MODULE``. Not both, and not neither. +.. _@login_required: ../authentication/#the-login-required-decorator + Error reporting via e-mail ========================== diff --git a/docs/sitemaps.txt b/docs/sitemaps.txt index dafc009859..550f448de1 100644 --- a/docs/sitemaps.txt +++ b/docs/sitemaps.txt @@ -2,8 +2,6 @@ The sitemap framework ===================== -**New in Django development version**. - Django comes with a high-level sitemap-generating framework that makes creating sitemap_ XML files easy. diff --git a/docs/sites.txt b/docs/sites.txt index 7497d7dd80..12259b04c3 100644 --- a/docs/sites.txt +++ b/docs/sites.txt @@ -276,8 +276,8 @@ you want your admin site to have access to all objects (not just site-specific ones), put ``objects = models.Manager()`` in your model, before you define ``CurrentSiteManager``. -.. _manager: ../model_api/#managers -.. _manager documentation: ../model_api/#managers +.. _manager: ../model-api/#managers +.. _manager documentation: ../model-api/#managers How Django uses the sites framework =================================== diff --git a/docs/syndication_feeds.txt b/docs/syndication_feeds.txt index a64914de3f..d9d4f53b88 100644 --- a/docs/syndication_feeds.txt +++ b/docs/syndication_feeds.txt @@ -114,6 +114,9 @@ Note: `object-relational mapper`_, ``items()`` doesn't have to return model instances. Although you get a few bits of functionality "for free" by using Django models, ``items()`` can return any type of object you want. + * If you're creating an Atom feed, rather than an RSS feed, set the + ``subtitle`` attribute instead of the ``description`` attribute. See + `Publishing Atom and RSS feeds in tandem`_, later, for an example. One thing's left to do. In an RSS feed, each ```` has a ````, ``<link>`` and ``<description>``. We need to tell the framework what data to @@ -156,7 +159,7 @@ put into those elements. {{ obj.description }} .. _chicagocrime.org: http://www.chicagocrime.org/ -.. _object-relational mapper: ../db_api/ +.. _object-relational mapper: ../db-api/ .. _Django templates: ../templates/ A complex example @@ -298,7 +301,7 @@ Publishing Atom and RSS feeds in tandem --------------------------------------- Some developers like to make available both Atom *and* RSS versions of their -feeds. That's easy to do with Django: Just create a subclass of your ``feed`` +feeds. That's easy to do with Django: Just create a subclass of your ``Feed`` class and set the ``feed_type`` to something different. Then update your URLconf to add the extra versions. @@ -318,6 +321,20 @@ Here's a full example:: class AtomSiteNewsFeed(RssSiteNewsFeed): feed_type = Atom1Feed + subtitle = RssSiteNewsFeed.description + +.. Note:: + In this example, the RSS feed uses a ``description`` while the Atom feed + uses a ``subtitle``. That's because Atom feeds don't provide for a + feed-level "description," but they *do* provide for a "subtitle." + + If you provide a ``description`` in your ``Feed`` class, Django will *not* + automatically put that into the ``subtitle`` element, because a subtitle + and description are not necessarily the same thing. Instead, you should + define a ``subtitle`` attribute. + + In the above example, we simply set the Atom feed's ``subtitle`` to the + RSS feed's ``description``, because it's quite short already. And the accompanying URLconf:: @@ -629,15 +646,15 @@ This example illustrates all possible attributes and methods for a ``Feed`` clas def item_enclosure_mime_type(self, item): """ Takes an item, as returned by items(), and returns the item's - enclosure mime type. + enclosure MIME type. """ def item_enclosure_mime_type(self): """ - Returns the enclosure length, in bytes, for every item in the feed. + Returns the enclosure MIME type for every item in the feed. """ - item_enclosure_mime_type = "audio/mpeg" # Hard-coded enclosure mime-type. + item_enclosure_mime_type = "audio/mpeg" # Hard-coded enclosure MIME type. # ITEM PUBDATE -- It's optional to use one of these three. This is a # hook that specifies how to get the pubdate for a given item. diff --git a/docs/templates.txt b/docs/templates.txt index d93ee49ac1..2f9f769b96 100644 --- a/docs/templates.txt +++ b/docs/templates.txt @@ -702,11 +702,11 @@ Example:: Note that you can backslash-escape a format string if you want to use the "raw" value. In this example, "f" is backslash-escaped, because otherwise "f" is a format string that displays the time. The "o" doesn't need to be -escaped, because it's not a format character.:: +escaped, because it's not a format character:: It is the {% now "jS o\f F" %} -(Displays "It is the 4th of September" %} +This would display as "It is the 4th of September". regroup ~~~~~~~ @@ -1293,3 +1293,11 @@ A collection of template filters that implement these common markup languages: * Textile * Markdown * ReST (ReStructured Text) + +django.contrib.webdesign +------------------------ + +A collection of template tags that can be useful while designing a website, +such as a generator of Lorem Ipsum text. See the `webdesign documentation`_. + +.. _webdesign documentation: ../webdesign/ diff --git a/docs/templates_python.txt b/docs/templates_python.txt index 5dd8e4fde0..08a287f572 100644 --- a/docs/templates_python.txt +++ b/docs/templates_python.txt @@ -212,21 +212,24 @@ template tags. If an invalid variable is provided to one of these template tags, the variable will be interpreted as ``None``. Filters are always applied to invalid variables within these template tags. +If ``TEMPLATE_STRING_IF_INVALID`` contains a ``'%s'``, the format marker will +be replaced with the name of the invalid variable. + .. admonition:: For debug purposes only! - While ``TEMPLATE_STRING_IF_INVALID`` can be a useful debugging tool, - it is a bad idea to turn it on as a 'development default'. + While ``TEMPLATE_STRING_IF_INVALID`` can be a useful debugging tool, + it is a bad idea to turn it on as a 'development default'. - Many templates, including those in the Admin site, rely upon the - silence of the template system when a non-existent variable is + Many templates, including those in the Admin site, rely upon the + silence of the template system when a non-existent variable is encountered. If you assign a value other than ``''`` to - ``TEMPLATE_STRING_IF_INVALID``, you will experience rendering + ``TEMPLATE_STRING_IF_INVALID``, you will experience rendering problems with these templates and sites. - Generally, ``TEMPLATE_STRING_IF_INVALID`` should only be enabled - in order to debug a specific template problem, then cleared + Generally, ``TEMPLATE_STRING_IF_INVALID`` should only be enabled + in order to debug a specific template problem, then cleared once debugging is complete. - + Playing with Context objects ---------------------------- @@ -345,7 +348,7 @@ If ``TEMPLATE_CONTEXT_PROCESSORS`` contains this processor, every ``request.user.get_and_delete_messages()`` for every request. That method collects the user's messages and deletes them from the database. - Note that messages are set with ``user.add_message()``. See the + Note that messages are set with ``user.message_set.create``. See the `message docs`_ for more. * ``perms`` -- An instance of @@ -714,7 +717,7 @@ object:: # split_contents() knows not to split quoted strings. tag_name, format_string = token.split_contents() except ValueError: - raise template.TemplateSyntaxError, "%r tag requires a single argument" % token.contents[0] + raise template.TemplateSyntaxError, "%r tag requires a single argument" % token.contents.split()[0] if not (format_string[0] == format_string[-1] and format_string[0] in ('"', "'")): raise template.TemplateSyntaxError, "%r tag's argument should be in quotes" % tag_name return CurrentTimeNode(format_string[1:-1]) @@ -843,7 +846,7 @@ Now your tag should begin to look like this:: # split_contents() knows not to split quoted strings. tag_name, date_to_be_formatted, format_string = token.split_contents() except ValueError: - raise template.TemplateSyntaxError, "%r tag requires exactly two arguments" % token.contents[0] + raise template.TemplateSyntaxError, "%r tag requires exactly two arguments" % token.contents.split()[0] if not (format_string[0] == format_string[-1] and format_string[0] in ('"', "'")): raise template.TemplateSyntaxError, "%r tag's argument should be in quotes" % tag_name return FormatTimeNode(date_to_be_formatted, format_string[1:-1]) @@ -866,7 +869,7 @@ current context, available in the ``render`` method:: try: actual_date = resolve_variable(self.date_to_be_formatted, context) return actual_date.strftime(self.format_string) - except VariableDoesNotExist: + except template.VariableDoesNotExist: return '' ``resolve_variable`` will try to resolve ``blog_entry.date_updated`` and then @@ -1020,7 +1023,7 @@ The ``takes_context`` parameter defaults to ``False``. When it's set to *True*, the tag is passed the context object, as in this example. That's the only difference between this case and the previous ``inclusion_tag`` example. -.. _tutorials: ../tutorial1/#creating-models +.. _tutorials: ../tutorial01/#creating-models Setting a variable in the context ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -1077,7 +1080,7 @@ class, like so:: # Splitting by None == splitting by spaces. tag_name, arg = token.contents.split(None, 1) except ValueError: - raise template.TemplateSyntaxError, "%r tag requires arguments" % token.contents[0] + raise template.TemplateSyntaxError, "%r tag requires arguments" % token.contents.split()[0] m = re.search(r'(.*?) as (\w+)', arg) if not m: raise template.TemplateSyntaxError, "%r tag had invalid arguments" % tag_name diff --git a/docs/testing.txt b/docs/testing.txt index 5b27ae6484..b44b67c20a 100644 --- a/docs/testing.txt +++ b/docs/testing.txt @@ -2,19 +2,29 @@ Testing Django applications =========================== -Automated testing is an extremely useful weapon in the bug-killing arsenal -of the modern developer. When initially writing code, a test suite can be -used to validate that code behaves as expected. When refactoring or -modifying code, tests serve as a guide to ensure that behavior hasn't -changed unexpectedly as a result of the refactor. +Automated testing is an extremely useful bug-killing tool for the modern +Web developer. You can use a collection of tests -- a **test suite** -- to +to solve, or avoid, a number of problems: -Testing a web application is a complex task, as there are many -components of a web application that must be validated and tested. To -help you test your application, Django provides a test execution -framework, and range of utilities that can be used to simulate and -inspect various facets of a web application. + * When you're writing new code, you can use tests to validate your code + works as expected. - This testing framework is currently under development, and may change + * When you're refactoring or modifying old code, you can use tests to + ensure your changes haven't affected your application's behavior + unexpectedly. + +Testing a Web application is a complex task, because a Web application is made +of several layers of logic -- from HTTP-level request handling, to form +validation and processing, to template rendering. With Django's test-execution +framework and assorted utilities, you can simulate requests, insert test data, +inspect your application's output and generally verify your code is doing what +it should be doing. + +The best part is, it's really easy. + +.. admonition:: Note + + This testing framework is currently under development. It may change slightly before the next official Django release. (That's *no* excuse not to write tests, though!) @@ -166,7 +176,8 @@ To assist in testing various features of your application, Django provides tools that can be used to establish tests and test conditions. * `Test Client`_ -* Fixtures_ +* `TestCase`_ +* `Email services`_ Test Client ----------- @@ -216,21 +227,21 @@ can be invoked on the ``Client`` instance. ``post(path, data={}, content_type=MULTIPART_CONTENT)`` Make a POST request on the provided ``path``. If you provide a content type - (e.g., ``text/xml`` for an XML payload), the contents of ``data`` will be - sent as-is in the POST request, using the content type in the HTTP + (e.g., ``text/xml`` for an XML payload), the contents of ``data`` will be + sent as-is in the POST request, using the content type in the HTTP ``Content-Type`` header. - - If you do not provide a value for ``content_type``, the values in + + If you do not provide a value for ``content_type``, the values in ``data`` will be transmitted with a content type of ``multipart/form-data``. 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 + + 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., @@ -246,29 +257,42 @@ can be invoked on the ``Client`` instance. file name), and `attachment_file` (containing the file data). Note that you need to manually close the file after it has been provided to the POST. -``login(path, username, password)`` - In a production site, it is likely that some views will be protected with - the @login_required decorator provided by ``django.contrib.auth``. Interacting - with a URL that has been login protected is a slightly complex operation, - so the Test Client provides a simple method to automate the login process. A - call to ``login()`` stimulates the series of GET and POST calls required - to log a user into a @login_required protected view. +``login(**credentials)`` + **New in Django development version** - If login is possible, the final return value of ``login()`` is the response - that is generated by issuing a GET request on the protected URL. If login - is not possible, ``login()`` returns False. + On a production site, it is likely that some views will be protected from + anonymous access through the use of the @login_required decorator, or some + other login checking mechanism. The ``login()`` method can be used to + simulate the effect of a user logging into the site. As a result of calling + this method, the Client will have all the cookies and session data required + to pass any login-based tests that may form part of a view. + + In most cases, the ``credentials`` required by this method are the username + and password of the user that wants to log in, provided as keyword + arguments:: + + c = Client() + c.login(username='fred', password='secret') + # Now you can access a login protected view + + If you are using a different authentication backend, this method may + require different credentials. + + ``login()`` returns ``True`` if it the credentials were accepted and login + was successful. Note that since the test suite will be executed using the test database, - which contains no users by default. As a result, logins for your production - site will not work. You will need to create users as part of the test suite - to be able to test logins to your application. + which contains no users by default. As a result, logins that are valid + on your production site will not work under test conditions. You will + need to create users as part of the test suite (either manually, or + using a test fixture). Testing Responses ~~~~~~~~~~~~~~~~~ -The ``get()``, ``post()`` and ``login()`` methods all return a Response -object. This Response object has the following properties that can be used -for testing purposes: +The ``get()`` and ``post()`` methods both return a Response object. This +Response object has the following properties that can be used for testing +purposes: =============== ========================================================== Property Description @@ -357,9 +381,31 @@ The following is a simple unit test using the Test Client:: # Check that the rendered context contains 5 customers self.failUnlessEqual(len(response.context['customers']), 5) -Fixtures +TestCase -------- +Normal python unit tests extend a base class of ``unittest.testCase``. +Django provides an extension of this base class - ``django.test.TestCase`` +- that provides some additional capabilities that can be useful for +testing web sites. + +Moving from a normal unittest TestCase to a Django TestCase is easy - just +change the base class of your test from ``unittest.TestCase`` to +``django.test.TestCase``. All of the standard Python unit test facilities +will continue to be available, but they will be augmented with some useful +extra facilities. + +Default Test Client +~~~~~~~~~~~~~~~~~~~ +**New in Django development version** + +Every test case in a ``django.test.TestCase`` instance has access to an +instance of a Django `Test Client`_. This Client can be accessed as +``self.client``. This client is recreated for each test. + +Fixture loading +~~~~~~~~~~~~~~~ + A test case for a database-backed website isn't much use if there isn't any data in the database. To make it easy to put test data into the database, Django provides a fixtures framework. @@ -370,22 +416,20 @@ comprise the fixture can be distributed over multiple directories, in multiple applications. .. note:: - If you have synchronized a Django project, you have already experienced + If you have synchronized a Django project, you have already experienced the use of one fixture -- the ``initial_data`` fixture. Every time you synchronize the database, Django installs the ``initial_data`` fixture. This provides a mechanism to populate a new database with any initial data (such as a default set of categories). Fixtures with other names - can be installed manually using ``django-admin.py loaddata``. - + can be installed manually using ``django-admin.py loaddata``. -However, for the purposes of unit testing, each test must be able to +However, for the purposes of unit testing, each test must be able to guarantee the contents of the database at the start of each and every -test. To do this, Django provides a TestCase baseclass that can integrate -with fixtures. +test. -Moving from a normal unittest TestCase to a Django TestCase is easy - just -change the base class of your test, and define a list of fixtures -to be used. For example, the test case from `Writing unittests`_ would +To define a fixture for a test, all you need to do is add a class +attribute to your test describing the fixtures you want the test to use. +For example, the test case from `Writing unittests`_ would look like:: from django.test import TestCase @@ -393,23 +437,115 @@ look like:: class AnimalTestCase(TestCase): fixtures = ['mammals.json', 'birds'] - + def setUp(self): # test definitions as before At the start of each test case, before ``setUp()`` is run, Django will -flush the database, returning the database the state it was in directly -after ``syncdb`` was called. Then, all the named fixtures are installed. +flush the database, returning the database the state it was in directly +after ``syncdb`` was called. Then, all the named fixtures are installed. In this example, any JSON fixture called ``mammals``, and any fixture -named ``birds`` will be installed. See the documentation on +named ``birds`` will be installed. See the documentation on `loading fixtures`_ for more details on defining and installing fixtures. -.. _`loading fixtures`: ../django_admin/#loaddata-fixture-fixture +.. _`loading fixtures`: ../django-admin/#loaddata-fixture-fixture -This flush/load procedure is repeated for each test in the test case, so you -can be certain that the outcome of a test will not be affected by +This flush/load procedure is repeated for each test in the test case, so you +can be certain that the outcome of a test will not be affected by another test, or the order of test execution. +Emptying the test outbox +~~~~~~~~~~~~~~~~~~~~~~~~ +**New in Django development version** + +At the start of each test case, in addition to installing fixtures, +Django clears the contents of the test email outbox. + +For more detail on email services during tests, see `Email services`_. + +Assertions +~~~~~~~~~~ +**New in Django development version** + +Normal Python unit tests have a wide range of assertions, such as +``assertTrue`` and ``assertEquals`` that can be used to validate behavior. +``django.TestCase`` adds to these, providing some assertions +that can be useful in testing the behavior of web sites. + +``assertContains(response, text, count=1, status_code=200)`` + Assert that a response indicates that a page could be retrieved and + produced the nominated status code, and that ``text`` occurs ``count`` + times in the content of the response. + +``assertFormError(response, form, field, errors)`` + Assert that a field on a form raised the provided list of errors when + rendered on the form. + + ``form`` is the name the form object was given in the template context. + + ``field`` is the name of the field on the form to check. If ``field`` + has a value of ``None``, non-field errors will be checked. + + ``errors`` is an error string, or a list of error strings, that are + expected as a result of form validation. + +``assertTemplateNotUsed(response, template_name)`` + Assert that the template with the given name was *not* used in rendering + the response. + +``assertRedirects(response, expected_path, status_code=302, target_status_code=200)`` + Assert that the response received produced the nominated status code, + redirects the browser to the provided path, and that retrieving the provided + path yields a response with the target status code. + +``assertTemplateUsed(response, template_name)`` + Assert that the template with the given name was used in rendering the + response. + +Email services +-------------- +**New in Django development version** + +If your view makes use of the `Django email services`_, you don't really +want email to be sent every time you run a test using that view. + +When the Django test framework is initialized, it transparently replaces the +normal `SMTPConnection`_ class with a dummy implementation that redirects all +email to a dummy outbox. This outbox, stored as ``django.core.mail.outbox``, +is a simple list of all `EmailMessage`_ instances that have been sent. +For example, during test conditions, it would be possible to run the following +code:: + + from django.core import mail + + # Send message + mail.send_mail('Subject here', 'Here is the message.', 'from@example.com', + ['to@example.com'], fail_silently=False) + + # One message has been sent + self.assertEqual(len(mail.outbox), 1) + # Subject of first message is correct + self.assertEqual(mail.outbox[0].subject, 'Subject here') + +The ``mail.outbox`` object does not exist under normal execution conditions. +The outbox is created during test setup, along with the dummy `SMTPConnection`_. +When the test framework is torn down, the standard `SMTPConnection`_ class +is restored, and the test outbox is destroyed. + +As noted `previously`_, the test outbox is emptied at the start of every +test in a Django TestCase. To empty the outbox manually, assign the empty list +to mail.outbox:: + + from django.core import mail + + # Empty the test outbox + mail.outbox = [] + +.. _`Django email services`: ../email/ +.. _`SMTPConnection`: ../email/#the-emailmessage-and-smtpconnection-classes +.. _`EmailMessage`: ../email/#the-emailmessage-and-smtpconnection-classes +.. _`previously`: #emptying-the-test-outbox + Running tests ============= @@ -434,6 +570,10 @@ database settings will the same as they would be for the project normally. If you wish to use a name other than the default for the test database, you can use the ``TEST_DATABASE_NAME`` setting to provide a name. +The test database is created by the user in the ``DATABASE_USER`` setting. +This user needs to have sufficient privileges to create a new database on the +system. + Once the test database has been established, Django will run your tests. If everything goes well, at the end you'll see:: @@ -468,11 +608,11 @@ failed:: FAILED (failures=1) -The return code for the script is the total number of failed and erroneous +The return code for the script is the total number of failed and erroneous tests. If all the tests pass, the return code is 0. Regardless of whether the tests pass or fail, the test database is destroyed when -all the tests have been executed. +all the tests have been executed. Using a different testing framework =================================== @@ -483,7 +623,7 @@ it does provide a mechanism to allow you to invoke tests constructed for an alternative framework as if they were normal Django tests. When you run ``./manage.py test``, Django looks at the ``TEST_RUNNER`` -setting to determine what to do. By default, ``TEST_RUNNER`` points to +setting to determine what to do. By default, ``TEST_RUNNER`` points to ``django.test.simple.run_tests``. This method defines the default Django testing behavior. This behavior involves: @@ -513,7 +653,7 @@ arguments: Verbosity determines the amount of notification and debug information that will be printed to the console; `0` is no output, `1` is normal output, and `2` is verbose output. - + This method should return the number of tests that failed. Testing utilities @@ -524,11 +664,12 @@ a number of utility methods in the ``django.test.utils`` module. ``setup_test_environment()`` Performs any global pre-test setup, such as the installing the - instrumentation of the template rendering system. + instrumentation of the template rendering system and setting up + the dummy SMTPConnection. ``teardown_test_environment()`` Performs any global post-test teardown, such as removing the instrumentation - of the template rendering system. + of the template rendering system and restoring normal email services. ``create_test_db(verbosity=1, autoclobber=False)`` Creates a new test database, and run ``syncdb`` against it. diff --git a/docs/tutorial01.txt b/docs/tutorial01.txt index 0e857d09ca..c40b051b19 100644 --- a/docs/tutorial01.txt +++ b/docs/tutorial01.txt @@ -124,7 +124,7 @@ It worked! Full docs for the development server are at `django-admin documentation`_. -.. _django-admin documentation: ../django_admin/ +.. _django-admin documentation: ../django-admin/ Database setup -------------- @@ -382,7 +382,7 @@ If you're interested, also run the following commands: statements for this app. * ``python manage.py sqlall polls`` -- A combination of all the SQL from - the 'sql', 'sqlinitialdata', and 'sqlindexes' commands. + the 'sql', 'sqlcustom', and 'sqlindexes' commands. Looking at the output of those commands can help you understand what's actually happening under the hood. @@ -400,7 +400,7 @@ as you like, and it will only ever create the tables that don't exist. Read the `django-admin.py documentation`_ for full information on what the ``manage.py`` utility can do. -.. _django-admin.py documentation: ../django_admin/ +.. _django-admin.py documentation: ../django-admin/ Playing with the API ==================== @@ -577,5 +577,5 @@ For full details on the database API, see our `Database API reference`_. When you're comfortable with the API, read `part 2 of this tutorial`_ to get Django's automatic admin working. -.. _Database API reference: ../db_api/ -.. _part 2 of this tutorial: ../tutorial2/ +.. _Database API reference: ../db-api/ +.. _part 2 of this tutorial: ../tutorial02/ diff --git a/docs/tutorial02.txt b/docs/tutorial02.txt index 2eabae96f0..6e4b0ea35e 100644 --- a/docs/tutorial02.txt +++ b/docs/tutorial02.txt @@ -5,7 +5,7 @@ Writing your first Django app, part 2 This tutorial begins where `Tutorial 1`_ left off. We're continuing the Web-poll application and will focus on Django's automatically-generated admin site. -.. _Tutorial 1: ../tutorial1/ +.. _Tutorial 1: ../tutorial01/ .. admonition:: Philosophy @@ -61,8 +61,8 @@ tutorial, remember?) You should see the Django admin index page: :alt: Django admin index page :target: http://media.djangoproject.com/img/doc/tutorial/admin02.png -By default, you should see two types of editable content: groups and users. -These are core features Django ships with by default. +You should see a few other types of editable content, including groups, users +and sites. These are core features Django ships with by default. .. _"I can't log in" questions: ../faq/#the-admin-site @@ -434,4 +434,4 @@ When you're comfortable with the admin site, read `part 3 of this tutorial`_ to start working on public poll views. .. _Django admin CSS guide: ../admin_css/ -.. _part 3 of this tutorial: ../tutorial3/ +.. _part 3 of this tutorial: ../tutorial03/ diff --git a/docs/tutorial03.txt b/docs/tutorial03.txt index 17b6ec0c68..8bb63791aa 100644 --- a/docs/tutorial03.txt +++ b/docs/tutorial03.txt @@ -5,7 +5,7 @@ Writing your first Django app, part 3 This tutorial begins where `Tutorial 2`_ left off. We're continuing the Web-poll application and will focus on creating the public interface -- "views." -.. _Tutorial 2: ../tutorial2/ +.. _Tutorial 2: ../tutorial02/ Philosophy ========== @@ -463,4 +463,4 @@ All the poll app cares about is its relative URLs, not its absolute URLs. When you're comfortable with writing views, read `part 4 of this tutorial`_ to learn about simple form processing and generic views. -.. _part 4 of this tutorial: ../tutorial4/ +.. _part 4 of this tutorial: ../tutorial04/ diff --git a/docs/tutorial04.txt b/docs/tutorial04.txt index b1c8c7d4fc..6fee842f8b 100644 --- a/docs/tutorial04.txt +++ b/docs/tutorial04.txt @@ -219,7 +219,7 @@ template. Note that we use ``dict()`` to return an altered dictionary in place. If you'd like to know more about how that works, The Django database API documentation `explains the lazy nature of QuerySet objects`_. -.. _explains the lazy nature of QuerySet objects: ../db_api/#querysets-are-lazy +.. _explains the lazy nature of QuerySet objects: ../db-api/#querysets-are-lazy In previous parts of the tutorial, the templates have been provided with a context that contains the ``poll`` and ``latest_poll_list`` context variables. However, @@ -256,4 +256,4 @@ installments: * Advanced admin features: Permissions * Advanced admin features: Custom JavaScript -.. _Tutorial 3: ../tutorial3/ +.. _Tutorial 3: ../tutorial03/ diff --git a/docs/url_dispatch.txt b/docs/url_dispatch.txt index e6e1cb6cbf..39eed0625b 100644 --- a/docs/url_dispatch.txt +++ b/docs/url_dispatch.txt @@ -192,10 +192,11 @@ The remaining arguments should be tuples in this format:: url --- -**New in development version** -The ``url()`` function can be used instead of a tuple as an argument to -``patterns()``. This is convenient if you wish to specify a name without the +**New in Django development version** + +You can use the ``url()`` function, instead of a tuple, as an argument to +``patterns()``. This is convenient if you want to specify a name without the optional extra arguments dictionary. For example:: urlpatterns = patterns('', @@ -498,26 +499,40 @@ the view prefix (as explained in "The view prefix" above) will have no effect. Naming URL patterns =================== -**New in development version** +**New in Django development version** -It is fairly common to use the same view function in multiple URL patterns in -your URLConf. This leads to problems when you come to do reverse URL matching, -because the ``permalink()`` decorator and ``{% url %}`` template tag use the -name of the view function to find a match. +It's fairly common to use the same view function in multiple URL patterns in +your URLconf. For example, these two URL patterns both point to the ``archive`` +view:: -To solve this problem, you can give a name to each of your URL patterns in -order to distinguish them from other patterns using the same views and -parameters. You can then use this name wherever you would otherwise use the -name of the view function. For example, if you URLConf contains:: + urlpatterns = patterns('', + (r'/archive/(\d{4})/$', archive), + (r'/archive-summary/(\d{4})/$', archive, {'summary': True}), + ) + +This is completely valid, but it leads to problems when you try to do reverse +URL matching (through the ``permalink()`` decorator or the ``{% url %}`` +template tag). Continuing this example, if you wanted to retrieve the URL for +the ``archive`` view, Django's reverse URL matcher would get confused, because +*two* URLpatterns point at that view. + +To solve this problem, Django supports **named URL patterns**. That is, you can +give a name to a URL pattern in order to distinguish it from other patterns +using the same view and parameters. Then, you can use this name in reverse URL +matching. + +Here's the above example, rewritten to used named URL patterns:: urlpatterns = patterns('', url(r'/archive/(\d{4})/$', archive, name="full-archive"), url(r'/archive-summary/(\d{4})/$', archive, {'summary': True}, "arch-summary"), ) -...you could refer to either the summary archive view in a template as:: +With these names in place (``full-archive`` and ``arch-summary``), you can +target each pattern individually by using its name:: {% url arch-summary 1945 %} + {% url full-archive 2007 %} Even though both URL patterns refer to the ``archive`` view here, using the ``name`` parameter to ``url()`` allows you to tell them apart in templates. @@ -527,11 +542,12 @@ not restricted to valid Python names. .. note:: - Make sure that when you name your URLs, you use names that are unlikely to - clash with any other application's choice of names. If you call your URL - pattern *comment* and another application does the same thing, there is no - guarantee which URL will be inserted into your template when you use this - name. Putting a prefix on your URL names, perhaps derived from - the application name, will decrease the chances of collision. Something - like *myapp-comment* is recommended over simply *comment*. + When you name your URL patterns, make sure you use names that are unlikely + to clash with any other application's choice of names. If you call your URL + pattern ``comment``, and another application does the same thing, there's + no guarantee which URL will be inserted into your template when you use + this name. + Putting a prefix on your URL names, perhaps derived from the application + name, will decrease the chances of collision. We recommend something like + ``myapp-comment`` instead of ``comment``. diff --git a/tests/modeltests/custom_columns/models.py b/tests/modeltests/custom_columns/models.py index c09ca05557..1283da07cf 100644 --- a/tests/modeltests/custom_columns/models.py +++ b/tests/modeltests/custom_columns/models.py @@ -71,7 +71,7 @@ __test__ = {'API_TESTS':""" >>> Author.objects.filter(firstname__exact='John') Traceback (most recent call last): ... -TypeError: Cannot resolve keyword 'firstname' into field +TypeError: Cannot resolve keyword 'firstname' into field. Choices are: article, id, first_name, last_name >>> a = Author.objects.get(last_name__exact='Smith') >>> a.first_name diff --git a/tests/modeltests/generic_relations/models.py b/tests/modeltests/generic_relations/models.py index 2b2f64165f..195f67db8f 100644 --- a/tests/modeltests/generic_relations/models.py +++ b/tests/modeltests/generic_relations/models.py @@ -11,6 +11,7 @@ from complete). from django.db import models from django.contrib.contenttypes.models import ContentType +from django.contrib.contenttypes import generic class TaggedItem(models.Model): """A tag on an item.""" @@ -18,7 +19,7 @@ class TaggedItem(models.Model): content_type = models.ForeignKey(ContentType) object_id = models.PositiveIntegerField() - content_object = models.GenericForeignKey() + content_object = generic.GenericForeignKey() class Meta: ordering = ["tag"] @@ -30,7 +31,7 @@ class Animal(models.Model): common_name = models.CharField(maxlength=150) latin_name = models.CharField(maxlength=150) - tags = models.GenericRelation(TaggedItem) + tags = generic.GenericRelation(TaggedItem) def __str__(self): return self.common_name @@ -39,7 +40,7 @@ class Vegetable(models.Model): name = models.CharField(maxlength=150) is_yucky = models.BooleanField(default=True) - tags = models.GenericRelation(TaggedItem) + tags = generic.GenericRelation(TaggedItem) def __str__(self): return self.name diff --git a/tests/modeltests/lookup/models.py b/tests/modeltests/lookup/models.py index 106c97d3b4..c634aef8a1 100644 --- a/tests/modeltests/lookup/models.py +++ b/tests/modeltests/lookup/models.py @@ -223,11 +223,11 @@ DoesNotExist: Article matching query does not exist. >>> Article.objects.filter(pub_date_year='2005').count() Traceback (most recent call last): ... -TypeError: Cannot resolve keyword 'pub_date_year' into field +TypeError: Cannot resolve keyword 'pub_date_year' into field. Choices are: id, headline, pub_date >>> Article.objects.filter(headline__starts='Article') Traceback (most recent call last): ... -TypeError: Cannot resolve keyword 'headline__starts' into field +TypeError: Cannot resolve keyword 'headline__starts' into field. Choices are: id, headline, pub_date """} diff --git a/tests/modeltests/many_to_one/models.py b/tests/modeltests/many_to_one/models.py index 82eb3257d0..02f7bf1066 100644 --- a/tests/modeltests/many_to_one/models.py +++ b/tests/modeltests/many_to_one/models.py @@ -174,13 +174,13 @@ False >>> Article.objects.filter(reporter_id__exact=1) Traceback (most recent call last): ... -TypeError: Cannot resolve keyword 'reporter_id' into field +TypeError: Cannot resolve keyword 'reporter_id' into field. Choices are: id, headline, pub_date, reporter # You need to specify a comparison clause >>> Article.objects.filter(reporter_id=1) Traceback (most recent call last): ... -TypeError: Cannot resolve keyword 'reporter_id' into field +TypeError: Cannot resolve keyword 'reporter_id' into field. Choices are: id, headline, pub_date, reporter # You can also instantiate an Article by passing # the Reporter's ID instead of a Reporter object. diff --git a/tests/modeltests/model_forms/models.py b/tests/modeltests/model_forms/models.py index 2757787571..a23529b566 100644 --- a/tests/modeltests/model_forms/models.py +++ b/tests/modeltests/model_forms/models.py @@ -24,6 +24,12 @@ a commit=True parameter. from django.db import models +ARTICLE_STATUS = ( + (1, 'Draft'), + (2, 'Pending'), + (3, 'Live'), +) + class Category(models.Model): name = models.CharField(maxlength=20) url = models.CharField('The URL', maxlength=40) @@ -44,6 +50,7 @@ class Article(models.Model): writer = models.ForeignKey(Writer) article = models.TextField() categories = models.ManyToManyField(Category, blank=True) + status = models.IntegerField(choices=ARTICLE_STATUS, blank=True, null=True) def save(self): import datetime @@ -147,8 +154,8 @@ Create a couple of Writers. >>> w = Writer(name='Bob Woodward') >>> w.save() -ManyToManyFields are represented by a MultipleChoiceField, and ForeignKeys are -represented by a ChoiceField. +ManyToManyFields are represented by a MultipleChoiceField, ForeignKeys and any +fields with the 'choices' attribute are represented by a ChoiceField. >>> ArticleForm = form_for_model(Article) >>> f = ArticleForm(auto_id=False) >>> print f @@ -160,6 +167,12 @@ represented by a ChoiceField. <option value="2">Bob Woodward</option> </select></td></tr> <tr><th>Article:</th><td><textarea rows="10" cols="40" name="article"></textarea></td></tr> +<tr><th>Status:</th><td><select name="status"> +<option value="" selected="selected">---------</option> +<option value="1">Draft</option> +<option value="2">Pending</option> +<option value="3">Live</option> +</select></td></tr> <tr><th>Categories:</th><td><select multiple="multiple" name="categories"> <option value="1">Entertainment</option> <option value="2">It's a test</option> @@ -200,6 +213,12 @@ current values are inserted as 'initial' data in each Field. <option value="2">Bob Woodward</option> </select></li> <li>Article: <textarea rows="10" cols="40" name="article">Hello.</textarea></li> +<li>Status: <select name="status"> +<option value="" selected="selected">---------</option> +<option value="1">Draft</option> +<option value="2">Pending</option> +<option value="3">Live</option> +</select></li> <li>Categories: <select multiple="multiple" name="categories"> <option value="1">Entertainment</option> <option value="2">It's a test</option> @@ -232,6 +251,12 @@ Add some categories and test the many-to-many form output. <option value="2">Bob Woodward</option> </select></li> <li>Article: <textarea rows="10" cols="40" name="article">Hello.</textarea></li> +<li>Status: <select name="status"> +<option value="" selected="selected">---------</option> +<option value="1">Draft</option> +<option value="2">Pending</option> +<option value="3">Live</option> +</select></li> <li>Categories: <select multiple="multiple" name="categories"> <option value="1" selected="selected">Entertainment</option> <option value="2">It's a test</option> @@ -310,6 +335,12 @@ the data in the database when the form is instantiated. <option value="2">Bob Woodward</option> </select></li> <li>Article: <textarea rows="10" cols="40" name="article"></textarea></li> +<li>Status: <select name="status"> +<option value="" selected="selected">---------</option> +<option value="1">Draft</option> +<option value="2">Pending</option> +<option value="3">Live</option> +</select></li> <li>Categories: <select multiple="multiple" name="categories"> <option value="1">Entertainment</option> <option value="2">It's a test</option> @@ -329,6 +360,12 @@ the data in the database when the form is instantiated. <option value="3">Carl Bernstein</option> </select></li> <li>Article: <textarea rows="10" cols="40" name="article"></textarea></li> +<li>Status: <select name="status"> +<option value="" selected="selected">---------</option> +<option value="1">Draft</option> +<option value="2">Pending</option> +<option value="3">Live</option> +</select></li> <li>Categories: <select multiple="multiple" name="categories"> <option value="1">Entertainment</option> <option value="2">It's a test</option> diff --git a/tests/modeltests/reverse_lookup/models.py b/tests/modeltests/reverse_lookup/models.py index 7e6712676f..4d6591551a 100644 --- a/tests/modeltests/reverse_lookup/models.py +++ b/tests/modeltests/reverse_lookup/models.py @@ -55,5 +55,5 @@ __test__ = {'API_TESTS':""" >>> Poll.objects.get(choice__name__exact="This is the answer") Traceback (most recent call last): ... -TypeError: Cannot resolve keyword 'choice' into field +TypeError: Cannot resolve keyword 'choice' into field. Choices are: poll_choice, related_choice, id, question, creator """} diff --git a/tests/modeltests/test_client/models.py b/tests/modeltests/test_client/models.py index 44ddffb55f..5ebf29678c 100644 --- a/tests/modeltests/test_client/models.py +++ b/tests/modeltests/test_client/models.py @@ -20,23 +20,19 @@ rather than the HTML rendered to the end-user. """ from django.test import Client, TestCase +from django.core import mail class ClientTest(TestCase): fixtures = ['testdata.json'] - def setUp(self): - "Set up test environment" - self.client = Client() - def test_get_view(self): "GET a view" response = self.client.get('/test_client/get_view/') # Check some response details - self.assertEqual(response.status_code, 200) + self.assertContains(response, 'This is a test') self.assertEqual(response.context['var'], 42) self.assertEqual(response.template.name, 'GET Template') - self.failUnless('This is a test.' in response.content) def test_get_post_view(self): "GET a view that normally expects POSTs" @@ -45,6 +41,8 @@ class ClientTest(TestCase): # Check some response details self.assertEqual(response.status_code, 200) self.assertEqual(response.template.name, 'Empty GET Template') + self.assertTemplateUsed(response, 'Empty GET Template') + self.assertTemplateNotUsed(response, 'Empty POST Template') def test_empty_post(self): "POST an empty dictionary to a view" @@ -53,6 +51,8 @@ class ClientTest(TestCase): # Check some response details self.assertEqual(response.status_code, 200) self.assertEqual(response.template.name, 'Empty POST Template') + self.assertTemplateNotUsed(response, 'Empty GET Template') + self.assertTemplateUsed(response, 'Empty POST Template') def test_post(self): "POST some data to a view" @@ -68,6 +68,7 @@ class ClientTest(TestCase): self.failUnless('Data received' in response.content) def test_raw_post(self): + "POST raw data (with a content type) to a view" test_doc = """<?xml version="1.0" encoding="utf-8"?><library><book><title>BlinkMalcolm Gladwell""" response = self.client.post("/test_client/raw_post_view/", test_doc, content_type="text/xml") @@ -80,7 +81,29 @@ class ClientTest(TestCase): response = self.client.get('/test_client/redirect_view/') # Check that the response was a 302 (redirect) - self.assertEqual(response.status_code, 302) + self.assertRedirects(response, '/test_client/get_view/') + + def test_permanent_redirect(self): + "GET a URL that redirects permanently elsewhere" + response = self.client.get('/test_client/permanent_redirect_view/') + + # Check that the response was a 301 (permanent redirect) + self.assertRedirects(response, '/test_client/get_view/', status_code=301) + + def test_redirect_to_strange_location(self): + "GET a URL that redirects to a non-200 page" + response = self.client.get('/test_client/double_redirect_view/') + + # Check that the response was a 302, and that + # the attempt to get the redirection location returned 301 when retrieved + self.assertRedirects(response, '/test_client/permanent_redirect_view/', target_status_code=301) + + def test_notfound_response(self): + "GET a URL that responds as '404:Not Found'" + response = self.client.get('/test_client/bad_view/') + + # Check that the response was a 404, and that the content contains MAGIC + self.assertContains(response, 'MAGIC', status_code=404) def test_valid_form(self): "POST valid data to a form" @@ -93,7 +116,7 @@ class ClientTest(TestCase): } response = self.client.post('/test_client/form_view/', post_data) self.assertEqual(response.status_code, 200) - self.assertEqual(response.template.name, "Valid POST Template") + self.assertTemplateUsed(response, "Valid POST Template") def test_incomplete_data_form(self): "POST incomplete data to a form" @@ -102,8 +125,13 @@ class ClientTest(TestCase): 'value': 37 } response = self.client.post('/test_client/form_view/', post_data) + self.assertContains(response, 'This field is required.', 3) self.assertEqual(response.status_code, 200) - self.assertEqual(response.template.name, "Invalid POST Template") + self.assertTemplateUsed(response, "Invalid POST Template") + + self.assertFormError(response, 'form', 'email', 'This field is required.') + self.assertFormError(response, 'form', 'single', 'This field is required.') + self.assertFormError(response, 'form', 'multi', 'This field is required.') def test_form_error(self): "POST erroneous data to a form" @@ -116,7 +144,57 @@ class ClientTest(TestCase): } response = self.client.post('/test_client/form_view/', post_data) self.assertEqual(response.status_code, 200) - self.assertEqual(response.template.name, "Invalid POST Template") + self.assertTemplateUsed(response, "Invalid POST Template") + + self.assertFormError(response, 'form', 'email', 'Enter a valid e-mail address.') + + def test_valid_form_with_template(self): + "POST valid data to a form using multiple templates" + 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_with_template/', post_data) + self.assertContains(response, 'POST data OK') + self.assertTemplateUsed(response, "form_view.html") + self.assertTemplateUsed(response, 'base.html') + self.assertTemplateNotUsed(response, "Valid POST Template") + + def test_incomplete_data_form_with_template(self): + "POST incomplete data to a form using multiple templates" + post_data = { + 'text': 'Hello World', + 'value': 37 + } + response = self.client.post('/test_client/form_view_with_template/', post_data) + self.assertContains(response, 'POST data has errors') + self.assertTemplateUsed(response, 'form_view.html') + self.assertTemplateUsed(response, 'base.html') + self.assertTemplateNotUsed(response, "Invalid POST Template") + + self.assertFormError(response, 'form', 'email', 'This field is required.') + self.assertFormError(response, 'form', 'single', 'This field is required.') + self.assertFormError(response, 'form', 'multi', 'This field is required.') + + def test_form_error_with_template(self): + "POST erroneous data to a form using multiple templates" + 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_with_template/', post_data) + self.assertContains(response, 'POST data has errors') + self.assertTemplateUsed(response, "form_view.html") + self.assertTemplateUsed(response, 'base.html') + self.assertTemplateNotUsed(response, "Invalid POST Template") + + self.assertFormError(response, 'form', 'email', 'Enter a valid e-mail address.') def test_unknown_page(self): "GET an invalid URL" @@ -130,20 +208,21 @@ class ClientTest(TestCase): # Get the page without logging in. Should result in 302. response = self.client.get('/test_client/login_protected_view/') - self.assertEqual(response.status_code, 302) + self.assertRedirects(response, '/accounts/login/') + # Log in + self.client.login(username='testclient', password='password') + # Request a page that requires a login - response = self.client.login('/test_client/login_protected_view/', 'testclient', 'password') - self.failUnless(response) + response = self.client.get('/test_client/login_protected_view/') self.assertEqual(response.status_code, 200) self.assertEqual(response.context['user'].username, 'testclient') - self.assertEqual(response.template.name, 'Login Template') def test_view_with_bad_login(self): "Request a page that is protected with @login, but use bad credentials" - response = self.client.login('/test_client/login_protected_view/', 'otheruser', 'nopassword') - self.failIf(response) + login = self.client.login(username='otheruser', password='nopassword') + self.failIf(login) def test_session_modifying_view(self): "Request a page that modifies the session" @@ -170,3 +249,36 @@ class ClientTest(TestCase): self.fail('Should raise an error') except KeyError: pass + + def test_mail_sending(self): + "Test that mail is redirected to a dummy outbox during test setup" + + response = self.client.get('/test_client/mail_sending_view/') + self.assertEqual(response.status_code, 200) + + self.assertEqual(len(mail.outbox), 1) + self.assertEqual(mail.outbox[0].subject, 'Test message') + self.assertEqual(mail.outbox[0].body, 'This is a test email') + self.assertEqual(mail.outbox[0].from_email, 'from@example.com') + self.assertEqual(mail.outbox[0].to[0], 'first@example.com') + self.assertEqual(mail.outbox[0].to[1], 'second@example.com') + + def test_mass_mail_sending(self): + "Test that mass mail is redirected to a dummy outbox during test setup" + + response = self.client.get('/test_client/mass_mail_sending_view/') + self.assertEqual(response.status_code, 200) + + self.assertEqual(len(mail.outbox), 2) + self.assertEqual(mail.outbox[0].subject, 'First Test message') + self.assertEqual(mail.outbox[0].body, 'This is the first test email') + self.assertEqual(mail.outbox[0].from_email, 'from@example.com') + self.assertEqual(mail.outbox[0].to[0], 'first@example.com') + self.assertEqual(mail.outbox[0].to[1], 'second@example.com') + + self.assertEqual(mail.outbox[1].subject, 'Second Test message') + self.assertEqual(mail.outbox[1].body, 'This is the second test email') + self.assertEqual(mail.outbox[1].from_email, 'from@example.com') + self.assertEqual(mail.outbox[1].to[0], 'second@example.com') + self.assertEqual(mail.outbox[1].to[1], 'third@example.com') + \ No newline at end of file diff --git a/tests/modeltests/test_client/urls.py b/tests/modeltests/test_client/urls.py index 707ecc186d..538c0e4b43 100644 --- a/tests/modeltests/test_client/urls.py +++ b/tests/modeltests/test_client/urls.py @@ -1,4 +1,5 @@ from django.conf.urls.defaults import * +from django.views.generic.simple import redirect_to import views urlpatterns = patterns('', @@ -6,8 +7,14 @@ urlpatterns = patterns('', (r'^post_view/$', views.post_view), (r'^raw_post_view/$', views.raw_post_view), (r'^redirect_view/$', views.redirect_view), + (r'^permanent_redirect_view/$', redirect_to, { 'url': '/test_client/get_view/' }), + (r'^double_redirect_view/$', views.double_redirect_view), + (r'^bad_view/$', views.bad_view), (r'^form_view/$', views.form_view), + (r'^form_view_with_template/$', views.form_view_with_template), (r'^login_protected_view/$', views.login_protected_view), (r'^session_view/$', views.session_view), - (r'^broken_view/$', views.broken_view) + (r'^broken_view/$', views.broken_view), + (r'^mail_sending_view/$', views.mail_sending_view), + (r'^mass_mail_sending_view/$', views.mass_mail_sending_view) ) diff --git a/tests/modeltests/test_client/views.py b/tests/modeltests/test_client/views.py index 36ec144cf6..9bdf213b35 100644 --- a/tests/modeltests/test_client/views.py +++ b/tests/modeltests/test_client/views.py @@ -1,9 +1,11 @@ from xml.dom.minidom import parseString +from django.core.mail import EmailMessage, SMTPConnection from django.template import Context, Template -from django.http import HttpResponse, HttpResponseRedirect +from django.http import HttpResponse, HttpResponseRedirect, HttpResponseNotFound from django.contrib.auth.decorators import login_required from django.newforms.forms import Form from django.newforms import fields +from django.shortcuts import render_to_response def get_view(request): "A simple view that expects a GET request, and returns a rendered template" @@ -48,6 +50,14 @@ def redirect_view(request): "A view that redirects all requests to the GET view" return HttpResponseRedirect('/test_client/get_view/') +def double_redirect_view(request): + "A view that redirects all requests to a redirection view" + return HttpResponseRedirect('/test_client/permanent_redirect_view/') + +def bad_view(request): + "A view that returns a 404 with some error content" + return HttpResponseNotFound('Not found!. This page contains some MAGIC content') + TestChoices = ( ('a', 'First Choice'), ('b', 'Second Choice'), @@ -79,6 +89,25 @@ def form_view(request): c = Context({'form': form}) return HttpResponse(t.render(c)) + +def form_view_with_template(request): + "A view that tests a simple form" + if request.method == 'POST': + form = TestForm(request.POST) + if form.is_valid(): + message = 'POST data OK' + else: + message = 'POST data has errors' + else: + form = TestForm() + message = 'GET form page' + return render_to_response('form_view.html', + { + 'form': form, + 'message': message + } + ) + def login_protected_view(request): "A simple view that is login protected." @@ -100,3 +129,28 @@ def session_view(request): def broken_view(request): """A view which just raises an exception, simulating a broken view.""" raise KeyError("Oops! Looks like you wrote some bad code.") + +def mail_sending_view(request): + EmailMessage( + "Test message", + "This is a test email", + "from@example.com", + ['first@example.com', 'second@example.com']).send() + return HttpResponse("Mail sent") + +def mass_mail_sending_view(request): + m1 = EmailMessage( + 'First Test message', + 'This is the first test email', + 'from@example.com', + ['first@example.com', 'second@example.com']) + m2 = EmailMessage( + 'Second Test message', + 'This is the second test email', + 'from@example.com', + ['second@example.com', 'third@example.com']) + + c = SMTPConnection() + c.send_messages([m1,m2]) + + return HttpResponse("Mail sent") diff --git a/tests/regressiontests/cache/tests.py b/tests/regressiontests/cache/tests.py index cf58ab321a..9dc7161c03 100644 --- a/tests/regressiontests/cache/tests.py +++ b/tests/regressiontests/cache/tests.py @@ -46,6 +46,11 @@ class Cache(unittest.TestCase): self.assertEqual(cache.has_key("hello"), True) self.assertEqual(cache.has_key("goodbye"), False) + def test_in(self): + cache.set("hello", "goodbye") + self.assertEqual("hello" in cache, True) + self.assertEqual("goodbye" in cache, False) + def test_data_types(self): # test data types stuff = { diff --git a/tests/regressiontests/datastructures/tests.py b/tests/regressiontests/datastructures/tests.py index e008c255f1..18eb4fcccd 100644 --- a/tests/regressiontests/datastructures/tests.py +++ b/tests/regressiontests/datastructures/tests.py @@ -52,6 +52,8 @@ 'not one' >>> d.keys() == d.copy().keys() True +>>> print repr(d) +{'one': 'not one', 'two': 'two', 'three': 'three'} ### DotExpandedDict ############################################################ diff --git a/tests/regressiontests/dispatch/tests/test_saferef.py b/tests/regressiontests/dispatch/tests/test_saferef.py index 233a2023e0..c0ec879a4b 100644 --- a/tests/regressiontests/dispatch/tests/test_saferef.py +++ b/tests/regressiontests/dispatch/tests/test_saferef.py @@ -55,8 +55,10 @@ class Tester(unittest.TestCase): for t in self.ts: if hasattr(t, 'x'): self.assert_(sd.has_key(safeRef(t.x))) + self.assert_(safeRef(t.x) in sd) else: self.assert_(sd.has_key(safeRef(t))) + self.assert_(safeRef(t) in sd) def testRepresentation (self): """Test that the reference object's representation works diff --git a/tests/regressiontests/fixtures_regress/models.py b/tests/regressiontests/fixtures_regress/models.py index f9d4d35045..dd407df353 100644 --- a/tests/regressiontests/fixtures_regress/models.py +++ b/tests/regressiontests/fixtures_regress/models.py @@ -7,6 +7,13 @@ class Animal(models.Model): def __str__(self): return self.common_name +class Plant(models.Model): + name = models.CharField(maxlength=150) + + class Meta: + # For testing when upper case letter in app name; regression for #4057 + db_table = "Fixtures_regress_plant" + __test__ = {'API_TESTS':""" >>> from django.core import management diff --git a/tests/regressiontests/forms/localflavor.py b/tests/regressiontests/forms/localflavor.py index b37aa3c6ea..ede89de2a0 100644 --- a/tests/regressiontests/forms/localflavor.py +++ b/tests/regressiontests/forms/localflavor.py @@ -193,7 +193,7 @@ as its choices. - + @@ -633,7 +633,7 @@ u'00100' >>> f.clean(' 00100') Traceback (most recent call last): ... -ValidationError: [u'Enter a zip code in the format XXXXX.'] +ValidationError: [u'Enter a valid zip code.'] # ITRegionSelect ############################################################# @@ -642,6 +642,46 @@ ValidationError: [u'Enter a zip code in the format XXXXX.'] >>> w.render('regions', 'PMN') u'' +# ITSocialSecurityNumberField ################################################# + +>>> from django.contrib.localflavor.it.forms import ITSocialSecurityNumberField +>>> f = ITSocialSecurityNumberField() +>>> f.clean('LVSGDU99T71H501L') +u'LVSGDU99T71H501L' +>>> f.clean('LBRRME11A01L736W') +u'LBRRME11A01L736W' +>>> f.clean('lbrrme11a01l736w') +u'LBRRME11A01L736W' +>>> f.clean('LBR RME 11A01 L736W') +u'LBRRME11A01L736W' +>>> f.clean('LBRRME11A01L736A') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid Social Security number.'] +>>> f.clean('%BRRME11A01L736W') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid Social Security number.'] + +# ITVatNumberField ########################################################### + +>>> from django.contrib.localflavor.it.forms import ITVatNumberField +>>> f = ITVatNumberField() +>>> f.clean('07973780013') +u'07973780013' +>>> f.clean('7973780013') +u'07973780013' +>>> f.clean(7973780013) +u'07973780013' +>>> f.clean('07973780014') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid VAT number.'] +>>> f.clean('A7973780013') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid VAT number.'] + # FIZipCodeField ############################################################# FIZipCodeField validates that the data is a valid FI zipcode. @@ -800,6 +840,94 @@ ValidationError: [u'Enter a zip code in the format XXXXX-XXX.'] >>> f.clean('12345-123') u'12345-123' +# BRCNPJField ############################################################ + +>>> from django.contrib.localflavor.br.forms import BRCNPJField +>>> f = BRCNPJField(required=True) +>>> f.clean('') +Traceback (most recent call last): +... +ValidationError: [u'This field is required.'] +>>> f.clean('12-345-678/9012-10') +Traceback (most recent call last): +... +ValidationError: [u'Invalid CNPJ number.'] +>>> f.clean('12.345.678/9012-10') +Traceback (most recent call last): +... +ValidationError: [u'Invalid CNPJ number.'] +>>> f.clean('12345678/9012-10') +Traceback (most recent call last): +... +ValidationError: [u'Invalid CNPJ number.'] +>>> f.clean('64.132.916/0001-88') +'64.132.916/0001-88' +>>> f.clean('64-132-916/0001-88') +'64-132-916/0001-88' +>>> f.clean('64132916/0001-88') +'64132916/0001-88' +>>> f.clean('64.132.916/0001-XX') +Traceback (most recent call last): +... +ValidationError: [u'This field requires only numbers.'] +>>> f = BRCNPJField(required=False) +>>> f.clean('') +u'' + +# BRCPFField ################################################################# + +>>> from django.contrib.localflavor.br.forms import BRCPFField +>>> f = BRCPFField() +>>> f.clean('') +Traceback (most recent call last): +... +ValidationError: [u'This field is required.'] +>>> f.clean(None) +Traceback (most recent call last): +... +ValidationError: [u'This field is required.'] +>>> f.clean('489.294.654-54') +Traceback (most recent call last): +... +ValidationError: [u'Invalid CPF number.'] +>>> f.clean('295.669.575-98') +Traceback (most recent call last): +... +ValidationError: [u'Invalid CPF number.'] +>>> f.clean('539.315.127-22') +Traceback (most recent call last): +... +ValidationError: [u'Invalid CPF number.'] +>>> f.clean('663.256.017-26') +u'663.256.017-26' +>>> f.clean('66325601726') +u'66325601726' +>>> f.clean('375.788.573-20') +u'375.788.573-20' +>>> f.clean('84828509895') +u'84828509895' +>>> f.clean('375.788.573-XX') +Traceback (most recent call last): +... +ValidationError: [u'This field requires only numbers.'] +>>> f.clean('375.788.573-000') +Traceback (most recent call last): +... +ValidationError: [u'Ensure this value has at most 14 characters.'] +>>> f.clean('123.456.78') +Traceback (most recent call last): +... +ValidationError: [u'Ensure this value has at least 11 characters.'] +>>> f.clean('123456789555') +Traceback (most recent call last): +... +ValidationError: [u'This field requires at most 11 digits or 14 characters.'] +>>> f = BRCPFField(required=False) +>>> f.clean('') +u'' +>>> f.clean(None) +u'' + # BRPhoneNumberField ######################################################### >>> from django.contrib.localflavor.br.forms import BRPhoneNumberField @@ -883,6 +1011,60 @@ Traceback (most recent call last): ... ValidationError: [u'Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format.'] +# CHZipCodeField ############################################################ + +>>> from django.contrib.localflavor.ch.forms import CHZipCodeField +>>> f = CHZipCodeField() +>>> f.clean('800x') +Traceback (most recent call last): +... +ValidationError: [u'Enter a zip code in the format XXXX.'] +>>> f.clean('80 00') +Traceback (most recent call last): +... +ValidationError: [u'Enter a zip code in the format XXXX.'] +>>> f.clean('8000') +u'8000' + +# CHPhoneNumberField ######################################################## + +>>> from django.contrib.localflavor.ch.forms import CHPhoneNumberField +>>> f = CHPhoneNumberField() +>>> f.clean('01234567890') +Traceback (most recent call last): +... +ValidationError: [u'Phone numbers must be in 0XX XXX XX XX format.'] +>>> f.clean('1234567890') +Traceback (most recent call last): +... +ValidationError: [u'Phone numbers must be in 0XX XXX XX XX format.'] +>>> f.clean('0123456789') +u'012 345 67 89' + +# CHIdentityCardNumberField ################################################# + +>>> from django.contrib.localflavor.ch.forms import CHIdentityCardNumberField +>>> f = CHIdentityCardNumberField() +>>> f.clean('C1234567<0') +u'C1234567<0' +>>> f.clean('C1234567<1') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format.'] +>>> f.clean('2123456700') +u'2123456700' +>>> f.clean('2123456701') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format.'] + +# CHStateSelect ############################################################# + +>>> from django.contrib.localflavor.ch.forms import CHStateSelect +>>> w = CHStateSelect() +>>> w.render('state', 'AG') +u'' + ## AUPostCodeField ########################################################## A field that accepts a four digit Australian post code. @@ -1012,4 +1194,166 @@ states/territories as its choices. + +## ISIdNumberField ############################################################# + +>>> from django.contrib.localflavor.is_.forms import * +>>> f = ISIdNumberField() +>>> f.clean('2308803449') +u'230880-3449' +>>> f.clean('230880-3449') +u'230880-3449' +>>> f.clean('230880 3449') +u'230880-3449' +>>> f.clean('230880343') +Traceback (most recent call last): +... +ValidationError: [u'Ensure this value has at least 10 characters.'] +>>> f.clean('230880343234') +Traceback (most recent call last): +... +ValidationError: [u'Ensure this value has at most 11 characters.'] +>>> f.clean('abcdefghijk') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.'] +>>> f.clean('') +Traceback (most recent call last): +... +ValidationError: [u'This field is required.'] +>>> f.clean(None) +Traceback (most recent call last): +... +ValidationError: [u'This field is required.'] +>>> f.clean('2308803439') +Traceback (most recent call last): +... +ValidationError: [u'The Icelandic identification number is not valid.'] +>>> f.clean('2308803440') +u'230880-3440' +>>> f = ISIdNumberField(required=False) +>>> f.clean(None) +u'' +>>> f.clean('') +u'' + +## ISPhoneNumberField ############################################################# + +>>> from django.contrib.localflavor.is_.forms import * +>>> f = ISPhoneNumberField() +>>> f.clean('1234567') +u'1234567' +>>> f.clean('123 4567') +u'1234567' +>>> f.clean('123-4567') +u'1234567' +>>> f.clean('123-456') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid value.'] +>>> f.clean('123456') +Traceback (most recent call last): +... +ValidationError: [u'Ensure this value has at least 7 characters.'] +>>> f.clean('123456555') +Traceback (most recent call last): +... +ValidationError: [u'Ensure this value has at most 8 characters.'] +>>> f.clean('abcdefg') +Traceback (most recent call last): +ValidationError: [u'Enter a valid value.'] +>>> f.clean(' 1234567 ') +Traceback (most recent call last): +... +ValidationError: [u'Ensure this value has at most 8 characters.'] +>>> f.clean(' 12367 ') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid value.'] + +>>> f.clean('') +Traceback (most recent call last): +... +ValidationError: [u'This field is required.'] +>>> f.clean(None) +Traceback (most recent call last): +... +ValidationError: [u'This field is required.'] +>>> f = ISPhoneNumberField(required=False) +>>> f.clean(None) +u'' +>>> f.clean('') +u'' + +## ISPostalCodeSelect ############################################################# + +>>> from django.contrib.localflavor.is_.forms import * +>>> f = ISPostalCodeSelect() + +>>> f.render('foo', 'bar') +u'' + +## CLRutField ############################################################# + +CLRutField is a Field that checks the validity of the Chilean +personal identification number (RUT). It has two modes relaxed (default) and +strict. + +>>> from django.contrib.localflavor.cl.forms import CLRutField +>>> rut = CLRutField() + +>>> rut.clean('11-6') +'11-6' +>>> rut.clean('116') +'11-6' + +# valid format, bad verifier. +>>> rut.clean('11.111.111-0') +Traceback (most recent call last): +... +ValidationError: [u'The Chilean RUT is not valid.'] +>>> rut.clean('111') +Traceback (most recent call last): +... +ValidationError: [u'The Chilean RUT is not valid.'] + +>>> rut.clean('767484100') +'76.748.410-0' +>>> rut.clean('78.412.790-7') +'78.412.790-7' +>>> rut.clean('8.334.6043') +'8.334.604-3' +>>> rut.clean('76793310-K') +'76.793.310-K' + +Strict RUT usage (does not allow imposible values) +>>> rut = CLRutField(strict=True) + +>>> rut.clean('11-6') +Traceback (most recent call last): +... +ValidationError: [u'Enter valid a Chilean RUT. The format is XX.XXX.XXX-X.'] + +# valid format, bad verifier. +>>> rut.clean('11.111.111-0') +Traceback (most recent call last): +... +ValidationError: [u'The Chilean RUT is not valid.'] + +# Correct input, invalid format. +>>> rut.clean('767484100') +Traceback (most recent call last): +... +ValidationError: [u'Enter valid a Chilean RUT. The format is XX.XXX.XXX-X.'] +>>> rut.clean('78.412.790-7') +'78.412.790-7' +>>> rut.clean('8.334.6043') +Traceback (most recent call last): +... +ValidationError: [u'Enter valid a Chilean RUT. The format is XX.XXX.XXX-X.'] +>>> rut.clean('76793310-K') +Traceback (most recent call last): +... +ValidationError: [u'Enter valid a Chilean RUT. The format is XX.XXX.XXX-X.'] + """ diff --git a/tests/regressiontests/forms/tests.py b/tests/regressiontests/forms/tests.py index db420757f0..f15034ec66 100644 --- a/tests/regressiontests/forms/tests.py +++ b/tests/regressiontests/forms/tests.py @@ -6,6 +6,7 @@ from formsets import formset_tests form_tests = r""" >>> from django.newforms import * >>> import datetime +>>> import time >>> import re ########### @@ -659,10 +660,31 @@ Traceback (most recent call last): ... IndexError: list index out of range +# Unicode choices are correctly rendered as HTML >>> w = RadioSelect() >>> unicode(w.render('email', 'ŠĐĆŽćžšđ', choices=[('ŠĐĆŽćžšđ', 'ŠĐabcĆŽćžšđ'), ('ćžšđ', 'abcćžšđ')])) u'
                                    \n
                                  • \n
                                  • \n
                                  ' +# Attributes provided at instantiation are passed to the constituent inputs +>>> w = RadioSelect(attrs={'id':'foo'}) +>>> print w.render('beatle', 'J', choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))) +
                                    +
                                  • +
                                  • +
                                  • +
                                  • +
                                  + +# Attributes provided at render-time are passed to the constituent inputs +>>> w = RadioSelect() +>>> print w.render('beatle', 'J', choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo')), attrs={'id':'bar'}) +
                                    +
                                  • +
                                  • +
                                  • +
                                  • +
                                  + # CheckboxSelectMultiple Widget ############################################### >>> w = CheckboxSelectMultiple() @@ -784,6 +806,11 @@ u'
                                    \n

                                  • ' >>> w.render('name', 'john__lennon') u'
                                    ' +>>> w.render('name', 'john__lennon', attrs={'id':'foo'}) +u'
                                    ' +>>> w = MyMultiWidget(widgets=(TextInput(attrs={'class': 'big'}), TextInput(attrs={'class': 'small'})), attrs={'id': 'bar'}) +>>> w.render('name', ['john', 'lennon']) +u'
                                    ' # SplitDateTimeWidget ######################################################### @@ -2575,6 +2602,27 @@ underscores converted to spaces, and the initial letter capitalized.
                                  • Password1:
                                  • Password (again):
                                  • +Labels for as_* methods will only end in a colon if they don't end in other +punctuation already. +>>> class Questions(Form): +... q1 = CharField(label='The first question') +... q2 = CharField(label='What is your name?') +... q3 = CharField(label='The answer to life is:') +... q4 = CharField(label='Answer this question!') +... q5 = CharField(label='The last question. Period.') +>>> print Questions(auto_id=False).as_p() +

                                    The first question:

                                    +

                                    What is your name?

                                    +

                                    The answer to life is:

                                    +

                                    Answer this question!

                                    +

                                    The last question. Period.

                                    +>>> print Questions().as_p() +

                                    +

                                    +

                                    +

                                    +

                                    + A label can be a Unicode object or a bytestring with special characters. >>> class UserRegistration(Form): ... username = CharField(max_length=10, label='ŠĐĆŽćžšđ') @@ -3272,6 +3320,94 @@ True +# MultiWidget and MultiValueField ############################################# +# MultiWidgets are widgets composed of other widgets. They are usually +# combined with MultiValueFields - a field that is composed of other fields. +# MulitWidgets can themselved be composed of other MultiWidgets. +# SplitDateTimeWidget is one example of a MultiWidget. + +>>> class ComplexMultiWidget(MultiWidget): +... def __init__(self, attrs=None): +... widgets = ( +... TextInput(), +... SelectMultiple(choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))), +... SplitDateTimeWidget(), +... ) +... super(ComplexMultiWidget, self).__init__(widgets, attrs) +... +... def decompress(self, value): +... if value: +... data = value.split(',') +... return [data[0], data[1], datetime.datetime(*time.strptime(data[2], "%Y-%m-%d %H:%M:%S")[0:6])] +... return [None, None, None] +... def format_output(self, rendered_widgets): +... return u'\n'.join(rendered_widgets) +>>> w = ComplexMultiWidget() +>>> print w.render('name', 'some text,JP,2007-04-25 06:24:00') + + + + +>>> class ComplexField(MultiValueField): +... def __init__(self, required=True, widget=None, label=None, initial=None): +... fields = ( +... CharField(), +... MultipleChoiceField(choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))), +... SplitDateTimeField() +... ) +... super(ComplexField, self).__init__(fields, required, widget, label, initial) +... +... def compress(self, data_list): +... if data_list: +... return '%s,%s,%s' % (data_list[0],''.join(data_list[1]),data_list[2]) +... return None + +>>> f = ComplexField(widget=w) +>>> f.clean(['some text', ['J','P'], ['2007-04-25','6:24:00']]) +u'some text,JP,2007-04-25 06:24:00' +>>> f.clean(['some text',['X'], ['2007-04-25','6:24:00']]) +Traceback (most recent call last): +... +ValidationError: [u'Select a valid choice. X is not one of the available choices.'] + +# If insufficient data is provided, None is substituted +>>> f.clean(['some text',['JP']]) +Traceback (most recent call last): +... +ValidationError: [u'This field is required.'] + +>>> class ComplexFieldForm(Form): +... field1 = ComplexField(widget=w) +>>> f = ComplexFieldForm() +>>> print f + + + + +>>> f = ComplexFieldForm({'field1_0':'some text','field1_1':['J','P'], 'field1_2_0':'2007-04-25', 'field1_2_1':'06:24:00'}) +>>> print f + + + + +>>> f.clean_data +{'field1': u'some text,JP,2007-04-25 06:24:00'} + ################################# # Tests of underlying functions # ################################# diff --git a/tests/regressiontests/httpwrappers/tests.py b/tests/regressiontests/httpwrappers/tests.py index 385c3048d9..c8016bc5bd 100644 --- a/tests/regressiontests/httpwrappers/tests.py +++ b/tests/regressiontests/httpwrappers/tests.py @@ -34,6 +34,9 @@ AttributeError: This QueryDict instance is immutable >>> q.has_key('foo') False +>>> 'foo' in q +False + >>> q.items() [] @@ -93,6 +96,12 @@ MultiValueDictKeyError: "Key 'foo' not found in " >>> q['name'] 'john' +>>> del q['name'] +>>> 'name' in q +False + +>>> q['name'] = 'john' + >>> q.get('foo', 'default') 'default' @@ -124,6 +133,9 @@ MultiValueDictKeyError: "Key 'foo' not found in " >>> q.has_key('foo') True +>>> 'foo' in q +True + >>> q.items() [('foo', 'another'), ('name', 'john')] @@ -218,9 +230,15 @@ AttributeError: This QueryDict instance is immutable >>> q.has_key('foo') True +>>> 'foo' in q +True + >>> q.has_key('bar') False +>>> 'bar' in q +False + >>> q.items() [('foo', 'bar')] @@ -303,9 +321,15 @@ AttributeError: This QueryDict instance is immutable >>> q.has_key('vote') True +>>> 'vote' in q +True + >>> q.has_key('foo') False +>>> 'foo' in q +False + >>> q.items() [('vote', 'no')] @@ -349,6 +373,11 @@ AttributeError: This QueryDict instance is immutable >>> q.urlencode() 'vote=yes&vote=no' +>>> del q['vote'] +Traceback (most recent call last): +... +AttributeError: This QueryDict instance is immutable + """ from django.http import QueryDict diff --git a/tests/regressiontests/null_queries/models.py b/tests/regressiontests/null_queries/models.py index 09024f18c2..21944d9e7a 100644 --- a/tests/regressiontests/null_queries/models.py +++ b/tests/regressiontests/null_queries/models.py @@ -32,7 +32,7 @@ __test__ = {'API_TESTS':""" >>> Choice.objects.filter(foo__exact=None) Traceback (most recent call last): ... -TypeError: Cannot resolve keyword 'foo' into field +TypeError: Cannot resolve keyword 'foo' into field. Choices are: id, poll, choice # Can't use None on anything other than __exact >>> Choice.objects.filter(id__gt=None) diff --git a/tests/regressiontests/serializers_regress/models.py b/tests/regressiontests/serializers_regress/models.py index d3415ac1b9..c287b6e0d6 100644 --- a/tests/regressiontests/serializers_regress/models.py +++ b/tests/regressiontests/serializers_regress/models.py @@ -6,6 +6,7 @@ This class sets up a model for each model field type """ from django.db import models +from django.contrib.contenttypes import generic from django.contrib.contenttypes.models import ContentType # The following classes are for testing basic data @@ -80,7 +81,7 @@ class Tag(models.Model): content_type = models.ForeignKey(ContentType) object_id = models.PositiveIntegerField() - content_object = models.GenericForeignKey() + content_object = generic.GenericForeignKey() class Meta: ordering = ["data"] @@ -88,7 +89,7 @@ class Tag(models.Model): class GenericData(models.Model): data = models.CharField(maxlength=30) - tags = models.GenericRelation(Tag) + tags = generic.GenericRelation(Tag) # The following test classes are all for validation # of related objects; in particular, forward, backward, diff --git a/tests/regressiontests/templates/tests.py b/tests/regressiontests/templates/tests.py index b544207be8..a5ed2dbf56 100644 --- a/tests/regressiontests/templates/tests.py +++ b/tests/regressiontests/templates/tests.py @@ -127,6 +127,18 @@ class Templates(unittest.TestCase): # Fail silently when accessing a non-simple method 'basic-syntax20': ("{{ var.method2 }}", {"var": SomeClass()}, ("","INVALID")), + # Don't get confused when parsing something that is almost, but not + # quite, a template tag. + 'basic-syntax21': ("a {{ moo %} b", {}, "a {{ moo %} b"), + 'basic-syntax22': ("{{ moo #}", {}, "{{ moo #}"), + + # Will try to treat "moo #} {{ cow" as the variable. Not ideal, but + # costly to work around, so this triggers an error. + 'basic-syntax23': ("{{ moo #} {{ cow }}", {"cow": "cow"}, template.TemplateSyntaxError), + + # Embedded newlines make it not-a-tag. + 'basic-syntax24': ("{{ moo\n }}", {}, "{{ moo\n }}"), + # List-index syntax allows a template to access a certain item of a subscriptable object. 'list-index01': ("{{ var.1 }}", {"var": ["first item", "second item"]}, "second item"), @@ -151,60 +163,61 @@ class Templates(unittest.TestCase): 'list-index07': ("{{ var.1 }}", {"var": {'1': "hello", 1: "world"}}, "hello"), # Basic filter usage - 'basic-syntax21': ("{{ var|upper }}", {"var": "Django is the greatest!"}, "DJANGO IS THE GREATEST!"), + 'filter-syntax01': ("{{ var|upper }}", {"var": "Django is the greatest!"}, "DJANGO IS THE GREATEST!"), # Chained filters - 'basic-syntax22': ("{{ var|upper|lower }}", {"var": "Django is the greatest!"}, "django is the greatest!"), + 'filter-syntax02': ("{{ var|upper|lower }}", {"var": "Django is the greatest!"}, "django is the greatest!"), # Raise TemplateSyntaxError for space between a variable and filter pipe - 'basic-syntax23': ("{{ var |upper }}", {}, template.TemplateSyntaxError), + 'filter-syntax03': ("{{ var |upper }}", {}, template.TemplateSyntaxError), # Raise TemplateSyntaxError for space after a filter pipe - 'basic-syntax24': ("{{ var| upper }}", {}, template.TemplateSyntaxError), + 'filter-syntax04': ("{{ var| upper }}", {}, template.TemplateSyntaxError), # Raise TemplateSyntaxError for a nonexistent filter - 'basic-syntax25': ("{{ var|does_not_exist }}", {}, template.TemplateSyntaxError), + 'filter-syntax05': ("{{ var|does_not_exist }}", {}, template.TemplateSyntaxError), # Raise TemplateSyntaxError when trying to access a filter containing an illegal character - 'basic-syntax26': ("{{ var|fil(ter) }}", {}, template.TemplateSyntaxError), + 'filter-syntax06': ("{{ var|fil(ter) }}", {}, template.TemplateSyntaxError), # Raise TemplateSyntaxError for invalid block tags - 'basic-syntax27': ("{% nothing_to_see_here %}", {}, template.TemplateSyntaxError), + 'filter-syntax07': ("{% nothing_to_see_here %}", {}, template.TemplateSyntaxError), # Raise TemplateSyntaxError for empty block tags - 'basic-syntax28': ("{% %}", {}, template.TemplateSyntaxError), + 'filter-syntax08': ("{% %}", {}, template.TemplateSyntaxError), # Chained filters, with an argument to the first one - 'basic-syntax29': ('{{ var|removetags:"b i"|upper|lower }}', {"var": "Yes"}, "yes"), + 'filter-syntax09': ('{{ var|removetags:"b i"|upper|lower }}', {"var": "Yes"}, "yes"), # Escaped string as argument - 'basic-syntax30': (r'{{ var|default_if_none:" endquote\" hah" }}', {"var": None}, ' endquote" hah'), + 'filter-syntax10': (r'{{ var|default_if_none:" endquote\" hah" }}', {"var": None}, ' endquote" hah'), # Variable as argument - 'basic-syntax31': (r'{{ var|default_if_none:var2 }}', {"var": None, "var2": "happy"}, 'happy'), + 'filter-syntax11': (r'{{ var|default_if_none:var2 }}', {"var": None, "var2": "happy"}, 'happy'), # Default argument testing - 'basic-syntax32': (r'{{ var|yesno:"yup,nup,mup" }} {{ var|yesno }}', {"var": True}, 'yup yes'), + 'filter-syntax12': (r'{{ var|yesno:"yup,nup,mup" }} {{ var|yesno }}', {"var": True}, 'yup yes'), - # Fail silently for methods that raise an exception with a "silent_variable_failure" attribute - 'basic-syntax33': (r'1{{ var.method3 }}2', {"var": SomeClass()}, ("12", "1INVALID2")), + # Fail silently for methods that raise an exception with a + # "silent_variable_failure" attribute + 'filter-syntax13': (r'1{{ var.method3 }}2', {"var": SomeClass()}, ("12", "1INVALID2")), - # In methods that raise an exception without a "silent_variable_attribute" set to True, - # the exception propagates - 'basic-syntax34': (r'1{{ var.method4 }}2', {"var": SomeClass()}, SomeOtherException), + # In methods that raise an exception without a + # "silent_variable_attribute" set to True, the exception propagates + 'filter-syntax14': (r'1{{ var.method4 }}2', {"var": SomeClass()}, SomeOtherException), # Escaped backslash in argument - 'basic-syntax35': (r'{{ var|default_if_none:"foo\bar" }}', {"var": None}, r'foo\bar'), + 'filter-syntax15': (r'{{ var|default_if_none:"foo\bar" }}', {"var": None}, r'foo\bar'), # Escaped backslash using known escape char - 'basic-syntax35': (r'{{ var|default_if_none:"foo\now" }}', {"var": None}, r'foo\now'), + 'filter-syntax16': (r'{{ var|default_if_none:"foo\now" }}', {"var": None}, r'foo\now'), # Empty strings can be passed as arguments to filters - 'basic-syntax36': (r'{{ var|join:"" }}', {'var': ['a', 'b', 'c']}, 'abc'), + 'filter-syntax17': (r'{{ var|join:"" }}', {'var': ['a', 'b', 'c']}, 'abc'), - # If a variable has a __str__() that returns a Unicode object, the value - # will be converted to a bytestring. - 'basic-syntax37': (r'{{ var }}', {'var': UnicodeInStrClass()}, '\xc5\xa0\xc4\x90\xc4\x86\xc5\xbd\xc4\x87\xc5\xbe\xc5\xa1\xc4\x91'), + # If a variable has a __str__() that returns a Unicode object, the + # value will be converted to a bytestring. + 'filter-syntax18': (r'{{ var }}', {'var': UnicodeInStrClass()}, '\xc5\xa0\xc4\x90\xc4\x86\xc5\xbd\xc4\x87\xc5\xbe\xc5\xa1\xc4\x91'), ### COMMENT SYNTAX ######################################################## 'comment-syntax01': ("{# this is hidden #}hello", {}, "hello"), @@ -259,6 +272,7 @@ class Templates(unittest.TestCase): 'filter01': ('{% filter upper %}{% endfilter %}', {}, ''), 'filter02': ('{% filter upper %}django{% endfilter %}', {}, 'DJANGO'), 'filter03': ('{% filter upper|lower %}django{% endfilter %}', {}, 'django'), + 'filter04': ('{% filter cut:remove %}djangospam{% endfilter %}', {'remove': 'spam'}, 'django'), ### FIRSTOF TAG ########################################################### 'firstof01': ('{% firstof a b c %}', {'a':0,'b':0,'c':0}, ''), @@ -572,6 +586,8 @@ class Templates(unittest.TestCase): 'invalidstr03': ('{% for v in var %}({{ v }}){% endfor %}', {}, ''), 'invalidstr04': ('{% if var %}Yes{% else %}No{% endif %}', {}, 'No'), 'invalidstr04': ('{% if var|default:"Foo" %}Yes{% else %}No{% endif %}', {}, 'Yes'), + 'invalidstr05': ('{{ var }}', {}, ('', 'INVALID %s', 'var')), + 'invalidstr06': ('{{ var.prop }}', {'var': {}}, ('', 'INVALID %s', 'var.prop')), ### MULTILINE ############################################################# @@ -654,6 +670,9 @@ class Templates(unittest.TestCase): 'with01': ('{% with dict.key as key %}{{ key }}{% endwith %}', {'dict': {'key':50}}, '50'), 'with02': ('{{ key }}{% with dict.key as key %}{{ key }}-{{ dict.key }}-{{ key }}{% endwith %}{{ key }}', {'dict': {'key':50}}, ('50-50-50', 'INVALID50-50-50INVALID')), + 'with-error01': ('{% with dict.key xx key %}{{ key }}{% endwith %}', {'dict': {'key':50}}, template.TemplateSyntaxError), + 'with-error02': ('{% with dict.key as %}{{ key }}{% endwith %}', {'dict': {'key':50}}, template.TemplateSyntaxError), + ### NOW TAG ######################################################## # Simple case 'now01' : ('{% now "j n Y"%}', {}, str(datetime.now().day) + ' ' + str(datetime.now().month) + ' ' + str(datetime.now().year)), @@ -690,7 +709,7 @@ class Templates(unittest.TestCase): ### URL TAG ######################################################## # Successes 'url01' : ('{% url regressiontests.templates.views.client client.id %}', {'client': {'id': 1}}, '/url_tag/client/1/'), - 'url02' : ('{% url regressiontests.templates.views.client_action client.id,action="update" %}', {'client': {'id': 1}}, '/url_tag/client/1/update/'), + 'url02' : ('{% url regressiontests.templates.views.client_action client.id, action="update" %}', {'client': {'id': 1}}, '/url_tag/client/1/update/'), 'url03' : ('{% url regressiontests.templates.views.index %}', {}, '/url_tag/'), 'url04' : ('{% url named-client client.id %}', {'client': {'id': 1}}, '/url_tag/named-client/1/'), @@ -720,6 +739,7 @@ class Templates(unittest.TestCase): # Set TEMPLATE_STRING_IF_INVALID to a known string old_invalid = settings.TEMPLATE_STRING_IF_INVALID + expected_invalid_str = 'INVALID' for name, vals in tests: install() @@ -727,6 +747,10 @@ class Templates(unittest.TestCase): if isinstance(vals[2], tuple): normal_string_result = vals[2][0] invalid_string_result = vals[2][1] + if '%s' in invalid_string_result: + expected_invalid_str = 'INVALID %s' + invalid_string_result = invalid_string_result % vals[2][2] + template.invalid_var_format_string = True else: normal_string_result = vals[2] invalid_string_result = vals[2] @@ -737,7 +761,7 @@ class Templates(unittest.TestCase): activate('en-us') for invalid_str, result in [('', normal_string_result), - ('INVALID', invalid_string_result)]: + (expected_invalid_str, invalid_string_result)]: settings.TEMPLATE_STRING_IF_INVALID = invalid_str try: output = loader.get_template(name).render(template.Context(vals[1])) @@ -751,6 +775,10 @@ class Templates(unittest.TestCase): if 'LANGUAGE_CODE' in vals[1]: deactivate() + if template.invalid_var_format_string: + expected_invalid_str = 'INVALID' + template.invalid_var_format_string = False + loader.template_source_loaders = old_template_loaders deactivate() settings.TEMPLATE_DEBUG = old_td diff --git a/tests/regressiontests/test_client_regress/__init__.py b/tests/regressiontests/test_client_regress/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/regressiontests/test_client_regress/models.py b/tests/regressiontests/test_client_regress/models.py new file mode 100644 index 0000000000..c39fafe314 --- /dev/null +++ b/tests/regressiontests/test_client_regress/models.py @@ -0,0 +1,136 @@ +""" +Regression tests for the Test Client, especially the customized assertions. + +""" +from django.test import Client, TestCase +from django.core import mail + +class AssertTemplateUsedTests(TestCase): + fixtures = ['testdata.json'] + + def test_no_context(self): + "Template usage assertions work then templates aren't in use" + response = self.client.get('/test_client_regress/no_template_view/') + + # Check that the no template case doesn't mess with the template assertions + self.assertTemplateNotUsed(response, 'GET Template') + + try: + self.assertTemplateUsed(response, 'GET Template') + except AssertionError, e: + self.assertEquals(str(e), "No templates used to render the response") + + def test_single_context(self): + "Template assertions work when there is a single context" + response = self.client.get('/test_client/post_view/', {}) + + # + try: + self.assertTemplateNotUsed(response, 'Empty GET Template') + except AssertionError, e: + self.assertEquals(str(e), "Template 'Empty GET Template' was used unexpectedly in rendering the response") + + try: + self.assertTemplateUsed(response, 'Empty POST Template') + except AssertionError, e: + self.assertEquals(str(e), "Template 'Empty POST Template' was not used to render the response. Actual template was 'Empty GET Template'") + + def test_multiple_context(self): + "Template assertions work when there are multiple contexts" + 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_with_template/', post_data) + self.assertContains(response, 'POST data OK') + try: + self.assertTemplateNotUsed(response, "form_view.html") + except AssertionError, e: + self.assertEquals(str(e), "Template 'form_view.html' was used unexpectedly in rendering the response") + + try: + self.assertTemplateNotUsed(response, 'base.html') + except AssertionError, e: + self.assertEquals(str(e), "Template 'base.html' was used unexpectedly in rendering the response") + + try: + self.assertTemplateUsed(response, "Valid POST Template") + except AssertionError, e: + self.assertEquals(str(e), "Template 'Valid POST Template' was not one of the templates used to render the response. Templates used: ['form_view.html', 'base.html']") + +class AssertFormErrorTests(TestCase): + def test_unknown_form(self): + "An assertion is raised if the form name is unknown" + 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.assertTemplateUsed(response, "Invalid POST Template") + + try: + self.assertFormError(response, 'wrong_form', 'some_field', 'Some error.') + except AssertionError, e: + self.assertEqual(str(e), "The form 'wrong_form' was not used to render the response") + + def test_unknown_field(self): + "An assertion is raised if the field name is unknown" + 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.assertTemplateUsed(response, "Invalid POST Template") + + try: + self.assertFormError(response, 'form', 'some_field', 'Some error.') + except AssertionError, e: + self.assertEqual(str(e), "The form 'form' in context 0 does not contain the field 'some_field'") + + def test_noerror_field(self): + "An assertion is raised if the field doesn't have any errors" + 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.assertTemplateUsed(response, "Invalid POST Template") + + try: + self.assertFormError(response, 'form', 'value', 'Some error.') + except AssertionError, e: + self.assertEqual(str(e), "The field 'value' on form 'form' in context 0 contains no errors") + + def test_unknown_error(self): + "An assertion is raised if the field doesn't contain the provided error" + 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.assertTemplateUsed(response, "Invalid POST Template") + + try: + self.assertFormError(response, 'form', 'email', 'Some error.') + except AssertionError, e: + self.assertEqual(str(e), "The field 'email' on form 'form' in context 0 does not contain the error 'Some error.' (actual errors: [u'Enter a valid e-mail address.'])") + diff --git a/tests/regressiontests/test_client_regress/urls.py b/tests/regressiontests/test_client_regress/urls.py new file mode 100644 index 0000000000..e9cd0aea15 --- /dev/null +++ b/tests/regressiontests/test_client_regress/urls.py @@ -0,0 +1,7 @@ +from django.conf.urls.defaults import * +from django.views.generic.simple import redirect_to +import views + +urlpatterns = patterns('', + (r'^no_template_view/$', views.no_template_view), +) diff --git a/tests/regressiontests/test_client_regress/views.py b/tests/regressiontests/test_client_regress/views.py new file mode 100644 index 0000000000..d8dd2b349c --- /dev/null +++ b/tests/regressiontests/test_client_regress/views.py @@ -0,0 +1,8 @@ +from django.core.mail import EmailMessage, SMTPConnection +from django.http import HttpResponse +from django.shortcuts import render_to_response + +def no_template_view(request): + "A simple view that expects a GET request, and returns a rendered template" + return HttpResponse("No template used") + diff --git a/tests/templates/base.html b/tests/templates/base.html new file mode 100644 index 0000000000..611bc094a9 --- /dev/null +++ b/tests/templates/base.html @@ -0,0 +1,8 @@ + + + +

                                    Django Internal Tests: {% block title %}{% endblock %}

                                    +{% block content %} +{% endblock %} + + \ No newline at end of file diff --git a/tests/templates/form_view.html b/tests/templates/form_view.html new file mode 100644 index 0000000000..1487217547 --- /dev/null +++ b/tests/templates/form_view.html @@ -0,0 +1,15 @@ +{% extends "base.html" %} +{% block title %}Submit data{% endblock %} +{% block content %} +

                                    {{ message }}

                                    + +{% if form.errors %} +

                                    Please correct the errors below:

                                    +{% endif %} +
                                      +{{ form }} +
                                    • +
                                    + + +{% endblock %} \ No newline at end of file diff --git a/tests/templates/login.html b/tests/templates/login.html index 8a0974c9a1..d55e9ddc75 100644 --- a/tests/templates/login.html +++ b/tests/templates/login.html @@ -1,7 +1,6 @@ - - - -

                                    Django Internal Tests: Login

                                    +{% extends "base.html" %} +{% block title %}Login{% endblock %} +{% block content %} {% if form.has_errors %}

                                    Your username and password didn't match. Please try again.

                                    {% endif %} @@ -15,5 +14,4 @@ - - \ No newline at end of file +{% endblock %} \ No newline at end of file diff --git a/tests/urls.py b/tests/urls.py index 9dcdca944e..dd475b0ea7 100644 --- a/tests/urls.py +++ b/tests/urls.py @@ -3,6 +3,7 @@ from django.conf.urls.defaults import * urlpatterns = patterns('', # test_client modeltest urls (r'^test_client/', include('modeltests.test_client.urls')), + (r'^test_client_regress/', include('regressiontests.test_client_regress.urls')), # Always provide the auth system login and logout views (r'^accounts/login/$', 'django.contrib.auth.views.login', {'template_name': 'login.html'}),