summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoulder Sprinters <boulder-sprinters@djangoproject.com>2007-03-09 17:43:46 +0000
committerBoulder Sprinters <boulder-sprinters@djangoproject.com>2007-03-09 17:43:46 +0000
commit0b7dd14d1f87e2ecef7aacc39fe4189667ed4fdf (patch)
treeb77497f9de324d38a9c6341e54d2742633e20055
parente17f75551491f5b864c1fc8a97c21d0b2bbf0bcd (diff)
boulder-oracle-sprint: Merged to trunk [4692].
git-svn-id: http://code.djangoproject.com/svn/django/branches/boulder-oracle-sprint@4695 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--AUTHORS40
-rw-r--r--MANIFEST.in10
-rwxr-xr-xdjango/bin/compile-messages.py17
-rw-r--r--django/conf/__init__.py7
-rw-r--r--django/conf/global_settings.py14
-rw-r--r--django/conf/locale/ca/LC_MESSAGES/django.mobin0 -> 31909 bytes
-rw-r--r--django/conf/locale/ca/LC_MESSAGES/django.po2383
-rw-r--r--django/conf/locale/ca/LC_MESSAGES/djangojs.mobin0 -> 1520 bytes
-rw-r--r--django/conf/locale/ca/LC_MESSAGES/djangojs.po121
-rw-r--r--django/conf/locale/de/LC_MESSAGES/django.mobin38123 -> 40423 bytes
-rw-r--r--django/conf/locale/de/LC_MESSAGES/django.po3228
-rw-r--r--django/conf/locale/de/LC_MESSAGES/djangojs.mobin1460 -> 1569 bytes
-rw-r--r--django/conf/locale/de/LC_MESSAGES/djangojs.po20
-rw-r--r--django/conf/locale/es/LC_MESSAGES/django.mobin28941 -> 40248 bytes
-rw-r--r--django/conf/locale/es/LC_MESSAGES/django.po3200
-rw-r--r--django/conf/locale/es_AR/LC_MESSAGES/django.mobin37293 -> 40281 bytes
-rw-r--r--django/conf/locale/es_AR/LC_MESSAGES/django.po525
-rw-r--r--django/conf/locale/es_AR/LC_MESSAGES/djangojs.mobin1576 -> 1576 bytes
-rw-r--r--django/conf/locale/es_AR/LC_MESSAGES/djangojs.po9
-rw-r--r--django/conf/locale/fi/LC_MESSAGES/django.mobin33598 -> 34867 bytes
-rw-r--r--django/conf/locale/fi/LC_MESSAGES/django.po67
-rw-r--r--django/conf/locale/fr/LC_MESSAGES/django.mobin32919 -> 32963 bytes
-rw-r--r--django/conf/locale/fr/LC_MESSAGES/django.po4
-rw-r--r--django/conf/locale/it/LC_MESSAGES/django.mobin32320 -> 40468 bytes
-rw-r--r--django/conf/locale/it/LC_MESSAGES/django.po2791
-rw-r--r--django/conf/locale/it/LC_MESSAGES/djangojs.mobin1613 -> 1643 bytes
-rw-r--r--django/conf/locale/it/LC_MESSAGES/djangojs.po96
-rw-r--r--django/conf/locale/ja/LC_MESSAGES/django.mobin41208 -> 43571 bytes
-rw-r--r--django/conf/locale/ja/LC_MESSAGES/django.po408
-rw-r--r--django/conf/locale/kn/LC_MESSAGES/django.mobin0 -> 57878 bytes
-rw-r--r--django/conf/locale/kn/LC_MESSAGES/django.po2533
-rw-r--r--django/conf/locale/kn/LC_MESSAGES/djangojs.mobin0 -> 2205 bytes
-rw-r--r--django/conf/locale/kn/LC_MESSAGES/djangojs.po116
-rw-r--r--django/conf/locale/lv/LC_MESSAGES/django.mobin0 -> 26751 bytes
-rw-r--r--django/conf/locale/lv/LC_MESSAGES/django.po2326
-rw-r--r--django/conf/locale/lv/LC_MESSAGES/djangojs.mobin0 -> 367 bytes
-rw-r--r--django/conf/locale/lv/LC_MESSAGES/djangojs.po118
-rw-r--r--django/conf/locale/mk/LC_MESSAGES/django.mobin0 -> 50847 bytes
-rw-r--r--django/conf/locale/mk/LC_MESSAGES/django.po2320
-rw-r--r--django/conf/locale/mk/LC_MESSAGES/djangojs.mobin0 -> 1921 bytes
-rw-r--r--django/conf/locale/mk/LC_MESSAGES/djangojs.po119
-rw-r--r--django/conf/locale/nl/LC_MESSAGES/django.mobin32146 -> 38004 bytes
-rw-r--r--django/conf/locale/nl/LC_MESSAGES/django.po780
-rw-r--r--django/conf/locale/sl/LC_MESSAGES/django.mobin33224 -> 32469 bytes
-rw-r--r--django/conf/locale/sl/LC_MESSAGES/django.po265
-rw-r--r--django/conf/locale/sr/LC_MESSAGES/django.mobin29583 -> 32246 bytes
-rw-r--r--django/conf/locale/sr/LC_MESSAGES/django.po693
-rw-r--r--django/conf/locale/sr/LC_MESSAGES/djangojs.mobin1699 -> 1669 bytes
-rw-r--r--django/conf/locale/sr/LC_MESSAGES/djangojs.po13
-rw-r--r--django/conf/locale/sv/LC_MESSAGES/django.mobin29118 -> 39640 bytes
-rw-r--r--django/conf/locale/sv/LC_MESSAGES/django.po2402
-rw-r--r--django/conf/locale/sv/LC_MESSAGES/djangojs.mobin905 -> 1680 bytes
-rw-r--r--django/conf/locale/sv/LC_MESSAGES/djangojs.po89
-rw-r--r--django/conf/locale/te/LC_MESSAGES/django.mobin0 -> 35017 bytes
-rw-r--r--django/conf/locale/te/LC_MESSAGES/django.po2106
-rw-r--r--django/conf/locale/te/LC_MESSAGES/djangojs.mobin0 -> 2206 bytes
-rw-r--r--django/conf/locale/te/LC_MESSAGES/djangojs.po110
-rw-r--r--django/conf/project_template/settings.py7
-rw-r--r--django/conf/urls/admin_password_reset.py6
-rw-r--r--django/conf/urls/registration.py19
-rw-r--r--django/contrib/admin/media/css/forms.css2
-rw-r--r--django/contrib/admin/media/js/urlify.js2
-rw-r--r--django/contrib/admin/templatetags/admin_list.py31
-rw-r--r--django/contrib/admin/templatetags/admin_modify.py10
-rw-r--r--django/contrib/admin/views/main.py20
-rw-r--r--django/contrib/auth/forms.py1
-rw-r--r--django/contrib/localflavor/__init__.py0
-rw-r--r--django/contrib/localflavor/uk/__init__.py0
-rw-r--r--django/contrib/localflavor/uk/forms.py19
-rw-r--r--django/contrib/localflavor/usa/__init__.py0
-rw-r--r--django/contrib/localflavor/usa/forms.py59
-rw-r--r--django/contrib/localflavor/usa/us_states.py239
-rw-r--r--django/contrib/sessions/middleware.py6
-rw-r--r--django/contrib/syndication/feeds.py2
-rw-r--r--django/core/mail.py35
-rw-r--r--django/core/management.py357
-rw-r--r--django/core/serializers/__init__.py5
-rw-r--r--django/core/serializers/base.py2
-rw-r--r--django/core/serializers/python.py15
-rw-r--r--django/core/serializers/xml_serializer.py16
-rw-r--r--django/core/urlresolvers.py4
-rw-r--r--django/core/validators.py10
-rw-r--r--django/db/backends/ado_mssql/base.py21
-rw-r--r--django/db/backends/dummy/base.py3
-rw-r--r--django/db/backends/mysql/base.py38
-rw-r--r--django/db/backends/oracle/base.py25
-rw-r--r--django/db/backends/postgresql/base.py74
-rw-r--r--django/db/backends/postgresql_psycopg2/base.py71
-rw-r--r--django/db/backends/sqlite3/base.py26
-rw-r--r--django/db/models/__init__.py5
-rw-r--r--django/db/models/base.py105
-rw-r--r--django/db/models/fields/__init__.py34
-rw-r--r--django/db/models/fields/related.py12
-rw-r--r--django/db/models/manipulators.py10
-rw-r--r--django/db/models/query.py115
-rw-r--r--django/db/models/related.py17
-rw-r--r--django/dispatch/dispatcher.py118
-rw-r--r--django/http/__init__.py4
-rw-r--r--django/newforms/fields.py9
-rw-r--r--django/newforms/forms.py20
-rw-r--r--django/newforms/models.py100
-rw-r--r--django/newforms/util.py5
-rw-r--r--django/newforms/widgets.py8
-rw-r--r--django/template/__init__.py39
-rw-r--r--django/template/context.py3
-rw-r--r--django/template/defaultfilters.py96
-rw-r--r--django/template/defaulttags.py63
-rw-r--r--django/template/loader_tags.py2
-rw-r--r--django/test/__init__.py6
-rw-r--r--django/test/client.py56
-rw-r--r--django/test/simple.py9
-rw-r--r--django/test/testcases.py20
-rw-r--r--django/test/utils.py3
-rw-r--r--django/utils/datastructures.py16
-rw-r--r--django/utils/dateformat.py6
-rw-r--r--django/utils/feedgenerator.py16
-rw-r--r--django/utils/text.py60
-rw-r--r--django/views/defaults.py4
-rw-r--r--django/views/generic/list_detail.py8
-rw-r--r--docs/add_ons.txt9
-rw-r--r--docs/authentication.txt165
-rw-r--r--docs/contributing.txt62
-rw-r--r--docs/db-api.txt30
-rw-r--r--docs/distributions.txt76
-rw-r--r--docs/django-admin.txt174
-rw-r--r--docs/email.txt6
-rw-r--r--docs/fastcgi.txt2
-rw-r--r--docs/forms.txt12
-rw-r--r--docs/generic_views.txt8
-rw-r--r--docs/install.txt31
-rw-r--r--docs/model-api.txt75
-rw-r--r--docs/newforms.txt47
-rw-r--r--docs/outputting_pdf.txt2
-rw-r--r--docs/request_response.txt115
-rw-r--r--docs/settings.txt97
-rw-r--r--docs/syndication_feeds.txt35
-rw-r--r--docs/templates.txt55
-rw-r--r--docs/templates_python.txt76
-rw-r--r--docs/testing.txt229
-rw-r--r--docs/tutorial01.txt16
-rw-r--r--docs/tutorial04.txt15
-rw-r--r--docs/url_dispatch.txt7
-rw-r--r--extras/django_bash_completion50
-rw-r--r--scripts/rpm-install.sh19
-rw-r--r--setup.cfg1
-rw-r--r--setup.py2
-rw-r--r--tests/modeltests/basic/models.py10
-rw-r--r--tests/modeltests/fixtures/__init__.py2
-rw-r--r--tests/modeltests/fixtures/fixtures/fixture1.json18
-rw-r--r--tests/modeltests/fixtures/fixtures/fixture2.json18
-rw-r--r--tests/modeltests/fixtures/fixtures/fixture2.xml11
-rw-r--r--tests/modeltests/fixtures/fixtures/fixture3.xml11
-rw-r--r--tests/modeltests/fixtures/fixtures/initial_data.json10
-rw-r--r--tests/modeltests/fixtures/models.py88
-rw-r--r--tests/modeltests/lookup/models.py24
-rw-r--r--tests/modeltests/model_forms/models.py180
-rw-r--r--tests/modeltests/select_related/__init__.py0
-rw-r--r--tests/modeltests/select_related/models.py152
-rw-r--r--tests/modeltests/serializers/models.py20
-rw-r--r--tests/modeltests/test_client/fixtures/testdata.json20
-rw-r--r--tests/modeltests/test_client/management.py10
-rw-r--r--tests/modeltests/test_client/models.py49
-rw-r--r--tests/modeltests/test_client/urls.py3
-rw-r--r--tests/modeltests/test_client/views.py45
-rw-r--r--tests/modeltests/validation/models.py4
-rw-r--r--tests/regressiontests/bug639/__init__.py0
-rw-r--r--tests/regressiontests/bug639/models.py16
-rw-r--r--tests/regressiontests/bug639/test.jpgbin0 -> 1780 bytes
-rw-r--r--tests/regressiontests/bug639/tests.py42
-rw-r--r--tests/regressiontests/datastructures/__init__.py0
-rw-r--r--tests/regressiontests/datastructures/models.py0
-rw-r--r--tests/regressiontests/datastructures/tests.py65
-rw-r--r--tests/regressiontests/dateformat/tests.py2
-rw-r--r--tests/regressiontests/defaultfilters/tests.py64
-rw-r--r--tests/regressiontests/dispatch/__init__.py2
-rw-r--r--tests/regressiontests/dispatch/models.py0
-rw-r--r--tests/regressiontests/dispatch/tests/__init__.py7
-rw-r--r--tests/regressiontests/dispatch/tests/test_dispatcher.py144
-rw-r--r--tests/regressiontests/dispatch/tests/test_robustapply.py34
-rw-r--r--tests/regressiontests/dispatch/tests/test_saferef.py77
-rw-r--r--tests/regressiontests/forms/tests.py485
-rw-r--r--tests/regressiontests/humanize/__init__.py0
-rw-r--r--tests/regressiontests/humanize/models.py0
-rw-r--r--tests/regressiontests/humanize/tests.py52
-rw-r--r--tests/regressiontests/many_to_one_regress/models.py29
-rw-r--r--tests/regressiontests/templates/tests.py65
-rw-r--r--tests/regressiontests/templates/urls.py10
-rw-r--r--tests/regressiontests/templates/views.py10
-rwxr-xr-xtests/runtests.py23
-rw-r--r--tests/urls.py5
190 files changed, 25032 insertions, 7215 deletions
diff --git a/AUTHORS b/AUTHORS
index c7aba07430..4a027fdd6e 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,7 +1,6 @@
Django was originally created in late 2003 at World Online, the Web division
of the Lawrence Journal-World newspaper in Lawrence, Kansas.
-
The PRIMARY AUTHORS are (and/or have been):
Adrian Holovaty <http://www.holovaty.com/>, who originally created Django with
@@ -43,8 +42,8 @@ people who have submitted patches, reported bugs, added translations, helped
answer newbie questions, and generally made Django that much better:
adurdin@gmail.com
- akaihola
Andreas
+ andy@jadedplanet.net
ant9000@netwise.it
David Ascher <http://ascher.ca/>
Arthur <avandorp@gmail.com>
@@ -53,10 +52,12 @@ answer newbie questions, and generally made Django that much better:
Shannon -jj Behrens <http://jjinux.blogspot.com/>
Esdras Beleza <linux@esdrasbeleza.com>
James Bennett
+ Ben <afternoon@uk2.net>
Paul Bissex <http://e-scribe.com/>
Simon Blanchard
Andrew Brehaut <http://brehaut.net/blog>
- andy@jadedplanet.net
+ brut.alll@gmail.com
+ Jonathan Buchanan <jonathan.buchanan@gmail.com>
Antonio Cavedoni <http://cavedoni.com/>
C8E
Chris Chamberlin <dja@cdc.msbx.net>
@@ -65,42 +66,53 @@ answer newbie questions, and generally made Django that much better:
Ian Clelland <clelland@gmail.com>
crankycoder@gmail.com
Matt Croydon <http://www.postneo.com/>
+ Jure Cuhalev <gandalf@owca.info>
dackze+django@gmail.com
+ Dirk Datzert <dummy@habmalnefrage.de>
Jonathan Daugherty (cygnus) <http://www.cprogrammer.org/>
+ dave@thebarproject.com
Jason Davies (Esaj) <http://www.jasondavies.com/>
Alex Dedul
deric@monowerks.com
dne@mayonnaise.net
Maximillian Dornseif <md@hudora.de>
- dummy@habmalnefrage.de
Jeremy Dunck <http://dunck.us/>
Andy Dustman <farcepest@gmail.com>
Clint Ecker
Enrico <rico.bl@gmail.com>
+ Ludvig Ericson <ludvig.ericson@gmail.com>
+ Dirk Eschler <dirk.eschler@gmx.net>
+ Marc Fargas <telenieko@telenieko.com>
favo@exoweb.net
Eric Floehr <eric@intellovations.com>
gandalf@owca.info
Baishampayan Ghose
martin.glueck@gmail.com
Simon Greenhill <dev@simon.net.nz>
+ Owen Griffiths
Espen Grindhaug <http://grindhaug.org/>
+ Brian Harring <ferringb@gmail.com>
Brant Harris
Hawkeye
- heckj@mac.com
+ Joe Heck <http://www.rhonabwy.com/wp/>
Joel Heenan <joelh-django@planetjoel.com>
hipertracker@gmail.com
Ian Holsman <http://feh.holsman.net/>
Kieran Holland <http://www.kieranholland.com>
Robert Rock Howard <http://djangomojo.com/>
Jason Huggins <http://www.jrandolph.com/blog/>
- Baurzhan Ismagulov <ibr@radix50.net>
+ Tom Insam
+ Baurzhan Ismagulov <ibr@radix50.net>
jcrasta@gmail.com
Michael Josephson <http://www.sdjournal.com/>
jpellerin@gmail.com
junzhang.jn@gmail.com
+ Antti Kaihola <http://akaihola.blogspot.com/>
+ Ben Dean Kawamura <ben.dean.kawamura@gmail.com>
Garth Kidd <http://www.deadlybloodyserious.com/>
kilian <kilian.cavalotti@lip6.fr>
Sune Kirkeby <http://ibofobi.dk/>
+ Bastian Kleineidam <calvin@debian.org>
Cameron Knight (ckknight)
Meir Kriheli <http://mksoft.co.il/>
Bruce Kroeze <http://coderseye.com/>
@@ -108,22 +120,25 @@ answer newbie questions, and generally made Django that much better:
konrad@gwu.edu
lakin.wecker@gmail.com
Stuart Langridge <http://www.kryogenix.org/>
+ Nicola Larosa <nico@teknico.net>
Eugene Lazutkin <http://lazutkin.com/blog/>
Jeong-Min Lee <falsetru@gmail.com>
Christopher Lenz <http://www.cmlenz.net/>
lerouxb@gmail.com
+ Waylan Limberg <waylan@gmail.com>
limodou
mattmcc
Martin Maney <http://www.chipy.org/Martin_Maney>
masonsimon+django@gmail.com
Manuzhai
- Petar Marić
+ Petar Marić <http://www.petarmaric.com/>
mark@junklight.com
Yasushi Masuda <whosaysni@gmail.com>
mattycakes@gmail.com
Jason McBrayer <http://www.carcosa.net/jason/>
mccutchen@gmail.com
michael.mcewan@gmail.com
+ mikko@sorl.net
mitakummaa@gmail.com
mmarshall
Eric Moritz <http://eric.themoritzfamily.com/>
@@ -135,9 +150,11 @@ answer newbie questions, and generally made Django that much better:
Neal Norwitz <nnorwitz@google.com>
oggie rob <oz.robharvey@gmail.com>
Jay Parlar <parlar@gmail.com>
+ pavithran s <pavithran.s@gmail.com>
pgross@thoughtworks.com
phaedo <http://phaedo.cx/>
phil@produxion.net
+ phil.h.smith@gmail.com
Gustavo Picon
Luke Plant <http://lukeplant.me.uk/>
plisk
@@ -146,31 +163,36 @@ answer newbie questions, and generally made Django that much better:
Michael Radziej <mir@noris.de>
ramiro
Brian Ray <http://brianray.chipy.org/>
+ remco@diji.biz
rhettg@gmail.com
Oliver Rutherfurd <http://rutherfurd.net/>
Ivan Sagalaev (Maniac) <http://www.softwaremaniacs.org/>
David Schein
+ scott@staplefish.com
serbaut@gmail.com
Pete Shinners <pete@shinners.org>
SmileyChris <smileychris@gmail.com>
smurf@smurf.noris.de
sopel
- Thomas Steinacher <tom@eggdrop.ch>
+ Georgi Stanojevski <glisha@gmail.com>
+ Thomas Steinacher <http://www.eggdrop.ch/>
nowell strite
Radek Švarz <http://www.svarz.cz/translate/>
Swaroop C H <http://www.swaroopch.info>
Aaron Swartz <http://www.aaronsw.com/>
Tyson Tate <tyson@fallingbullets.com>
Tom Tobin
- Tom Insam
Joe Topjian <http://joe.terrarum.net/geek/code/python/django/>
+ torne-django@wolfpuppy.org.uk
Karen Tracey <graybark@bellsouth.net>
Makoto Tsuyuki <mtsuyuki@gmail.com>
Amit Upadhyay
Geert Vanderkelen
+ viestards.lists@gmail.com
Milton Waddams
wam-djangobug@wamber.net
Dan Watson <http://theidioteque.net/>
+ Chris Wesseling <Chris.Wesseling@cwi.nl>
Rachel Willmer <http://www.willmer.com/kb/>
Gary Wilson <gary.wilson@gmail.com>
wojtek
diff --git a/MANIFEST.in b/MANIFEST.in
index b5fbb3cb90..11b60bcc14 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,8 +1,10 @@
include AUTHORS
include INSTALL
include LICENSE
+recursive-include docs *
+recursive-include scripts *
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/sitemaps/templates
+recursive-include django/contrib/admin/templates *
+recursive-include django/contrib/admin/media *
+recursive-include django/contrib/comments/templates *
+recursive-include django/contrib/sitemaps/templates *
diff --git a/django/bin/compile-messages.py b/django/bin/compile-messages.py
index 0137ec8dd4..f2193d3122 100755
--- a/django/bin/compile-messages.py
+++ b/django/bin/compile-messages.py
@@ -1,9 +1,10 @@
#!/usr/bin/env python
+import optparse
import os
import sys
-def compile_messages():
+def compile_messages(locale=None):
basedir = None
if os.path.isdir(os.path.join('conf', 'locale')):
@@ -14,6 +15,9 @@ def compile_messages():
print "This script should be run from the Django SVN tree or your project or app tree."
sys.exit(1)
+ if locale is not None:
+ basedir = os.path.join(basedir, locale, 'LC_MESSAGES')
+
for dirpath, dirnames, filenames in os.walk(basedir):
for f in filenames:
if f.endswith('.po'):
@@ -32,5 +36,14 @@ def compile_messages():
cmd = 'msgfmt -o "$djangocompilemo" "$djangocompilepo"'
os.system(cmd)
+def main():
+ parser = optparse.OptionParser()
+ parser.add_option('-l', '--locale', dest='locale',
+ help="The locale to process. Default is to process all.")
+ options, args = parser.parse_args()
+ if len(args):
+ parser.error("This program takes no arguments")
+ compile_messages(options.locale)
+
if __name__ == "__main__":
- compile_messages()
+ main()
diff --git a/django/conf/__init__.py b/django/conf/__init__.py
index daf5ad766a..021ecc8131 100644
--- a/django/conf/__init__.py
+++ b/django/conf/__init__.py
@@ -7,6 +7,7 @@ a list of all possible variables.
"""
import os
+import time # Needed for Windows
from django.conf import global_settings
ENVIRONMENT_VARIABLE = "DJANGO_SETTINGS_MODULE"
@@ -105,8 +106,10 @@ class Settings(object):
new_installed_apps.append(app)
self.INSTALLED_APPS = new_installed_apps
- # move the time zone info into os.environ
- os.environ['TZ'] = self.TIME_ZONE
+ if hasattr(time, 'tzset'):
+ # Move the time zone info into os.environ. See ticket #2315 for why
+ # we don't do this unconditionally (breaks Windows).
+ os.environ['TZ'] = self.TIME_ZONE
def get_all_members(self):
return dir(self)
diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py
index 245096590d..02a882fd99 100644
--- a/django/conf/global_settings.py
+++ b/django/conf/global_settings.py
@@ -38,6 +38,7 @@ LANGUAGE_CODE = 'en-us'
LANGUAGES = (
('ar', gettext_noop('Arabic')),
('bn', gettext_noop('Bengali')),
+ ('ca', gettext_noop('Catalan')),
('cs', gettext_noop('Czech')),
('cy', gettext_noop('Welsh')),
('da', gettext_noop('Danish')),
@@ -54,6 +55,9 @@ LANGUAGES = (
('is', gettext_noop('Icelandic')),
('it', gettext_noop('Italian')),
('ja', gettext_noop('Japanese')),
+ ('kn', gettext_noop('Kannada')),
+ ('lv', gettext_noop('Latvian')),
+ ('mk', gettext_noop('Macedonian')),
('nl', gettext_noop('Dutch')),
('no', gettext_noop('Norwegian')),
('pl', gettext_noop('Polish')),
@@ -65,6 +69,7 @@ LANGUAGES = (
('sr', gettext_noop('Serbian')),
('sv', gettext_noop('Swedish')),
('ta', gettext_noop('Tamil')),
+ ('te', gettext_noop('Telugu')),
('tr', gettext_noop('Turkish')),
('uk', gettext_noop('Ukrainian')),
('zh-cn', gettext_noop('Simplified Chinese')),
@@ -95,7 +100,7 @@ SERVER_EMAIL = 'root@localhost'
SEND_BROKEN_LINK_EMAILS = False
# Database connection info.
-DATABASE_ENGINE = '' # 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'.
+DATABASE_ENGINE = '' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'.
DATABASE_NAME = '' # Or path to database file if using sqlite3.
DATABASE_USER = '' # Not used with sqlite3.
DATABASE_PASSWORD = '' # Not used with sqlite3.
@@ -315,3 +320,10 @@ TEST_RUNNER = 'django.test.simple.run_tests'
# The name of the database to use for testing purposes.
# If None, a name of 'test_' + DATABASE_NAME will be assumed
TEST_DATABASE_NAME = None
+
+############
+# FIXTURES #
+############
+
+# The list of directories to search for fixtures
+FIXTURE_DIRS = ()
diff --git a/django/conf/locale/ca/LC_MESSAGES/django.mo b/django/conf/locale/ca/LC_MESSAGES/django.mo
new file mode 100644
index 0000000000..00cc135c2d
--- /dev/null
+++ b/django/conf/locale/ca/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/ca/LC_MESSAGES/django.po b/django/conf/locale/ca/LC_MESSAGES/django.po
new file mode 100644
index 0000000000..212ecda34a
--- /dev/null
+++ b/django/conf/locale/ca/LC_MESSAGES/django.po
@@ -0,0 +1,2383 @@
+# translation of django.po to
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Ricardo Javier Crdenes Medina <ricardo.cardenes@gmail.com>, 2005.
+# Ricardo Javier Cardenes Medina <ricardo.cardenes@gmail.com>, 2005.
+# Marc Fargas <marc@fargas.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-02-15 11:05+1100\n"
+"PO-Revision-Date: 2007-01-19 10:23+0100\n"
+"Last-Translator: Marc Fargas <marc@fargas.com>\n"
+"Language-Team: <es@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: db/models/manipulators.py:305
+#, python-format
+msgid "%(object)s with this %(type)s already exists for the given %(field)s."
+msgstr "Ja existeix %(object)s amb aquest %(fieldname)s."
+
+#: db/models/manipulators.py:306 contrib/admin/views/main.py:335
+#: contrib/admin/views/main.py:337 contrib/admin/views/main.py:339
+msgid "and"
+msgstr "i"
+
+#: db/models/fields/related.py:53
+#, python-format
+msgid "Please enter a valid %s."
+msgstr "Si us plau, introdueixi un %s vlid."
+
+#: db/models/fields/related.py:642
+msgid "Separate multiple IDs with commas."
+msgstr "Separi mltiples IDs amb comes."
+
+#: db/models/fields/related.py:644
+msgid ""
+"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgstr "Premi \"Control\" o \"Command\" en un Mac per escollir ms d'un."
+
+#: 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] ""
+"Si us plau, introdueixi IDs de %(self)s vlids. El valor %(value)r s "
+"invlid."
+msgstr[1] ""
+"Si us plau, introdueixi IDs de %(self)s vlids. Els valors %(value)r sn "
+"invlids."
+
+#: db/models/fields/__init__.py:42
+#, python-format
+msgid "%(optname)s with this %(fieldname)s already exists."
+msgstr "Ja existeix %(optname)s amb auqest %(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
+msgid "This field is required."
+msgstr "Aquest camp s obligatori."
+
+#: db/models/fields/__init__.py:366
+msgid "This value must be an integer."
+msgstr "Aquest valor ha de ser un enter."
+
+#: db/models/fields/__init__.py:401
+msgid "This value must be either True or False."
+msgstr "Aquest valor ha de ser True (Veritat) o False (Fals)"
+
+#: db/models/fields/__init__.py:422
+msgid "This field cannot be null."
+msgstr "Aquest camp no pot ser null (estar buit)."
+
+#: db/models/fields/__init__.py:454 core/validators.py:147
+msgid "Enter a valid date in YYYY-MM-DD format."
+msgstr "Introdueixi una data vlida en el forma AAAA-MM-DD."
+
+#: db/models/fields/__init__.py:521 core/validators.py:156
+msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
+msgstr "Introdueixi un data/hora vlida en format YYYY-MM-DD HH:MM."
+
+#: db/models/fields/__init__.py:625
+msgid "Enter a valid filename."
+msgstr "Introdueixi un nom de fitxer vlid."
+
+#: conf/global_settings.py:39
+msgid "Arabic"
+msgstr ""
+
+#: conf/global_settings.py:40
+msgid "Bengali"
+msgstr "Bengal"
+
+#: conf/global_settings.py:41
+#, fuzzy
+msgid "Catalan"
+msgstr "Itali"
+
+#: conf/global_settings.py:42
+msgid "Czech"
+msgstr "Chec"
+
+#: conf/global_settings.py:43
+msgid "Welsh"
+msgstr "Gals"
+
+#: conf/global_settings.py:44
+msgid "Danish"
+msgstr "Dans"
+
+#: conf/global_settings.py:45
+msgid "German"
+msgstr "Alemany"
+
+#: conf/global_settings.py:46
+msgid "Greek"
+msgstr "Grec"
+
+#: conf/global_settings.py:47
+msgid "English"
+msgstr "Angls"
+
+#: conf/global_settings.py:48
+msgid "Spanish"
+msgstr "Espanyol"
+
+#: conf/global_settings.py:49
+msgid "Argentinean Spanish"
+msgstr ""
+
+#: conf/global_settings.py:50
+#, fuzzy
+msgid "Finnish"
+msgstr "Dans"
+
+#: conf/global_settings.py:51
+msgid "French"
+msgstr "Francs"
+
+#: conf/global_settings.py:52
+msgid "Galician"
+msgstr "Galleg"
+
+#: conf/global_settings.py:53
+msgid "Hungarian"
+msgstr "Hngar"
+
+#: conf/global_settings.py:54
+msgid "Hebrew"
+msgstr "Hebreu"
+
+#: conf/global_settings.py:55
+msgid "Icelandic"
+msgstr "Islands"
+
+#: conf/global_settings.py:56
+msgid "Italian"
+msgstr "Itali"
+
+#: conf/global_settings.py:57
+msgid "Japanese"
+msgstr "Japons"
+
+#: conf/global_settings.py:58
+msgid "Latvian"
+msgstr ""
+
+#: conf/global_settings.py:59
+msgid "Macedonian"
+msgstr ""
+
+#: conf/global_settings.py:60
+msgid "Dutch"
+msgstr "Holands"
+
+#: conf/global_settings.py:61
+msgid "Norwegian"
+msgstr "Norueg"
+
+#: conf/global_settings.py:62
+#, fuzzy
+msgid "Polish"
+msgstr "Angls"
+
+#: conf/global_settings.py:63
+msgid "Brazilian"
+msgstr "Brasileny"
+
+#: conf/global_settings.py:64
+msgid "Romanian"
+msgstr "Rumans"
+
+#: conf/global_settings.py:65
+msgid "Russian"
+msgstr "Rs"
+
+#: conf/global_settings.py:66
+msgid "Slovak"
+msgstr "Eslovac"
+
+#: conf/global_settings.py:67
+msgid "Slovenian"
+msgstr "Esloveni"
+
+#: conf/global_settings.py:68
+msgid "Serbian"
+msgstr "Serbi"
+
+#: conf/global_settings.py:69
+msgid "Swedish"
+msgstr "Suec"
+
+#: conf/global_settings.py:70
+msgid "Tamil"
+msgstr ""
+
+#: conf/global_settings.py:71
+msgid "Turkish"
+msgstr ""
+
+#: conf/global_settings.py:72
+msgid "Ukrainian"
+msgstr "Ucrani"
+
+#: conf/global_settings.py:73
+msgid "Simplified Chinese"
+msgstr "Xins simplificat"
+
+#: conf/global_settings.py:74
+msgid "Traditional Chinese"
+msgstr "Xins tradicional"
+
+#: utils/timesince.py:12
+msgid "year"
+msgid_plural "years"
+msgstr[0] "any"
+msgstr[1] "anys"
+
+#: utils/timesince.py:13
+msgid "month"
+msgid_plural "months"
+msgstr[0] "mes"
+msgstr[1] "mesos"
+
+#: utils/timesince.py:14
+msgid "week"
+msgid_plural "weeks"
+msgstr[0] "setmana"
+msgstr[1] "setmanes"
+
+#: utils/timesince.py:15
+msgid "day"
+msgid_plural "days"
+msgstr[0] "dia"
+msgstr[1] "dies"
+
+#: utils/timesince.py:16
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "hora"
+msgstr[1] "hores"
+
+#: utils/timesince.py:17
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "minut"
+msgstr[1] "minuts"
+
+#: utils/dates.py:6
+msgid "Monday"
+msgstr "Dilluns"
+
+#: utils/dates.py:6
+msgid "Tuesday"
+msgstr "Dimarts"
+
+#: utils/dates.py:6
+msgid "Wednesday"
+msgstr "Dimecres"
+
+#: utils/dates.py:6
+msgid "Thursday"
+msgstr "Dijous"
+
+#: utils/dates.py:6
+msgid "Friday"
+msgstr "Divendres"
+
+#: utils/dates.py:7
+msgid "Saturday"
+msgstr "Dissabte"
+
+#: utils/dates.py:7
+msgid "Sunday"
+msgstr "Diumenge"
+
+#: utils/dates.py:14
+msgid "January"
+msgstr "Gener"
+
+#: utils/dates.py:14
+msgid "February"
+msgstr "Febrer"
+
+#: utils/dates.py:14 utils/dates.py:27
+msgid "March"
+msgstr "Mar"
+
+#: utils/dates.py:14 utils/dates.py:27
+msgid "April"
+msgstr "Abril"
+
+#: utils/dates.py:14 utils/dates.py:27
+msgid "May"
+msgstr "Maig"
+
+#: utils/dates.py:14 utils/dates.py:27
+msgid "June"
+msgstr "Juny"
+
+#: utils/dates.py:15 utils/dates.py:27
+msgid "July"
+msgstr "Juliol"
+
+#: utils/dates.py:15
+msgid "August"
+msgstr "Agost"
+
+#: utils/dates.py:15
+msgid "September"
+msgstr "Setembre"
+
+#: utils/dates.py:15
+msgid "October"
+msgstr "Octubre"
+
+#: utils/dates.py:15
+msgid "November"
+msgstr "Novembre"
+
+#: utils/dates.py:16
+msgid "December"
+msgstr "Desembre"
+
+#: utils/dates.py:19
+msgid "jan"
+msgstr "gen"
+
+#: utils/dates.py:19
+msgid "feb"
+msgstr "feb"
+
+#: utils/dates.py:19
+msgid "mar"
+msgstr "mar"
+
+#: utils/dates.py:19
+msgid "apr"
+msgstr "abr"
+
+#: utils/dates.py:19
+msgid "may"
+msgstr "mai"
+
+#: utils/dates.py:19
+msgid "jun"
+msgstr "jun"
+
+#: utils/dates.py:20
+msgid "jul"
+msgstr "jul"
+
+#: utils/dates.py:20
+msgid "aug"
+msgstr "ago"
+
+#: utils/dates.py:20
+msgid "sep"
+msgstr "set"
+
+#: utils/dates.py:20
+msgid "oct"
+msgstr "oct"
+
+#: utils/dates.py:20
+msgid "nov"
+msgstr "nov"
+
+#: utils/dates.py:20
+msgid "dec"
+msgstr "des"
+
+#: utils/dates.py:27
+msgid "Jan."
+msgstr "Gen."
+
+#: utils/dates.py:27
+msgid "Feb."
+msgstr "Feb."
+
+#: utils/dates.py:28
+msgid "Aug."
+msgstr "Ago."
+
+#: utils/dates.py:28
+msgid "Sept."
+msgstr "Set."
+
+#: utils/dates.py:28
+msgid "Oct."
+msgstr "Oct."
+
+#: utils/dates.py:28
+msgid "Nov."
+msgstr "Nov."
+
+#: utils/dates.py:28
+msgid "Dec."
+msgstr "Des."
+
+#: utils/translation/trans_real.py:362
+msgid "DATE_FORMAT"
+msgstr "F j, Y"
+
+#: utils/translation/trans_real.py:363
+msgid "DATETIME_FORMAT"
+msgstr "F j, Y, H:i"
+
+#: utils/translation/trans_real.py:364
+msgid "TIME_FORMAT"
+msgstr "H:i"
+
+#: utils/translation/trans_real.py:380
+#, fuzzy
+msgid "YEAR_MONTH_FORMAT"
+msgstr "F j, Y"
+
+#: utils/translation/trans_real.py:381
+#, fuzzy
+msgid "MONTH_DAY_FORMAT"
+msgstr "F j, Y"
+
+#: 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] "Aseguris de que el seu texte t menys de %s caracter."
+msgstr[1] "Aseguris de que el seu texte t menys de %s caracters."
+
+#: oldforms/__init__.py:392
+msgid "Line breaks are not allowed here."
+msgstr "No es permeten salts de linea."
+
+#: 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 "Esculli una opci vlida; %(data)s' no est dintre de %(choices)s."
+
+#: oldforms/__init__.py:572 contrib/admin/filterspecs.py:150
+#: newforms/widgets.py:162
+msgid "Unknown"
+msgstr "Desconegut"
+
+#: oldforms/__init__.py:572 contrib/admin/filterspecs.py:143
+#: newforms/widgets.py:162
+msgid "Yes"
+msgstr "Si"
+
+#: oldforms/__init__.py:572 contrib/admin/filterspecs.py:143
+#: newforms/widgets.py:162
+msgid "No"
+msgstr "No"
+
+#: 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 "El fitxer enviat est buit."
+
+#: oldforms/__init__.py:725
+msgid "Enter a whole number between -32,768 and 32,767."
+msgstr "Introdueixi un nmero enter entre -32,768 i 32,767."
+
+#: oldforms/__init__.py:735
+msgid "Enter a positive number."
+msgstr "Introdueixi un nmero positiu."
+
+#: oldforms/__init__.py:745
+msgid "Enter a whole number between 0 and 32,767."
+msgstr "Introdueixi un nmero entre 0 i 32,767."
+
+#: contrib/sessions/models.py:51
+msgid "session key"
+msgstr "clau de la sessi"
+
+#: contrib/sessions/models.py:52
+msgid "session data"
+msgstr "dades de la sessi"
+
+#: contrib/sessions/models.py:53
+msgid "expire date"
+msgstr "data de caducitat"
+
+#: contrib/sessions/models.py:57
+msgid "session"
+msgstr "sessi"
+
+#: contrib/sessions/models.py:58
+msgid "sessions"
+msgstr "sessions"
+
+#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
+msgid "The two password fields didn't match."
+msgstr ""
+
+#: contrib/auth/forms.py:25
+#, fuzzy
+msgid "A user with that username already exists."
+msgstr "Ja existeix %(optname)s amb auqest %(fieldname)s."
+
+#: contrib/auth/forms.py:53
+msgid ""
+"Your Web browser doesn't appear to have cookies enabled. Cookies are "
+"required for logging in."
+msgstr ""
+"El seu navegador no sembla tenir les 'cookies' (galetes) activades. Aquestes "
+"sn necessries per iniciar la sessi."
+
+#: 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 ""
+"Si us plau, introdueixi un nom d'usuari i contrasenya vlids. Tingui en "
+"compte que tots dos camps son sensibles a majscules i minscules."
+
+#: 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 "Finalitzar sessi"
+
+#: contrib/auth/models.py:38 contrib/auth/models.py:57
+msgid "name"
+msgstr "nom"
+
+#: contrib/auth/models.py:40
+msgid "codename"
+msgstr "nom en clau"
+
+#: contrib/auth/models.py:42
+msgid "permission"
+msgstr "perms"
+
+#: contrib/auth/models.py:43 contrib/auth/models.py:58
+msgid "permissions"
+msgstr "permissos"
+
+#: contrib/auth/models.py:60
+msgid "group"
+msgstr "grup"
+
+#: contrib/auth/models.py:61 contrib/auth/models.py:100
+msgid "groups"
+msgstr "grups"
+
+#: contrib/auth/models.py:90
+msgid "username"
+msgstr "nom d'usuari"
+
+#: 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 "nom propi"
+
+#: contrib/auth/models.py:92
+msgid "last name"
+msgstr "cognoms"
+
+#: contrib/auth/models.py:93
+msgid "e-mail address"
+msgstr "adrea de correu electrnic"
+
+#: contrib/auth/models.py:94
+msgid "password"
+msgstr "contrasenya"
+
+#: contrib/auth/models.py:94
+msgid ""
+"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
+"password form</a>."
+msgstr ""
+
+#: contrib/auth/models.py:95
+msgid "staff status"
+msgstr "s membre del personal"
+
+#: contrib/auth/models.py:95
+msgid "Designates whether the user can log into this admin site."
+msgstr "Indica si l'usuari pot entrar en el lloc administratiu."
+
+#: contrib/auth/models.py:96
+msgid "active"
+msgstr "actiu"
+
+#: contrib/auth/models.py:96
+#, fuzzy
+msgid ""
+"Designates whether this user can log into the Django admin. Unselect this "
+"instead of deleting accounts."
+msgstr "Indica si l'usuari pot entrar en el lloc administratiu."
+
+#: contrib/auth/models.py:97
+msgid "superuser status"
+msgstr "estat de superusuari"
+
+#: 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 "ltim inici de sessi"
+
+#: contrib/auth/models.py:99
+msgid "date joined"
+msgstr "data de creaci"
+
+#: 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 ""
+"Junt amb els permissos asignats manualment, aquest usuari tindr, tamb, els "
+"permissos dels grups dels que sigui membre."
+
+#: contrib/auth/models.py:102
+msgid "user permissions"
+msgstr "permissos de l'usuari"
+
+#: contrib/auth/models.py:105
+msgid "user"
+msgstr "usuari"
+
+#: contrib/auth/models.py:106
+msgid "users"
+msgstr "usuaris"
+
+#: contrib/auth/models.py:111
+msgid "Personal info"
+msgstr "Informaci personal"
+
+#: contrib/auth/models.py:112
+msgid "Permissions"
+msgstr "permissos"
+
+#: contrib/auth/models.py:113
+msgid "Important dates"
+msgstr "Dates importants"
+
+#: contrib/auth/models.py:114
+msgid "Groups"
+msgstr "Grups"
+
+#: contrib/auth/models.py:258
+msgid "message"
+msgstr "missatge"
+
+#: contrib/contenttypes/models.py:26
+msgid "python model class name"
+msgstr "nom de la classe del model en python"
+
+#: contrib/contenttypes/models.py:29
+msgid "content type"
+msgstr "tipus de contingut"
+
+#: contrib/contenttypes/models.py:30
+msgid "content types"
+msgstr "tipus de continguts"
+
+#: contrib/redirects/models.py:7
+msgid "redirect from"
+msgstr "redirigir desde"
+
+#: contrib/redirects/models.py:8
+msgid ""
+"This should be an absolute path, excluding the domain name. Example: '/"
+"events/search/'."
+msgstr ""
+"Aquesta ruta hauria de ser el cam absolut, excluint el nom del domini. "
+"Exemple '/events/search/'."
+
+#: contrib/redirects/models.py:9
+msgid "redirect to"
+msgstr "redirigir a"
+
+#: contrib/redirects/models.py:10
+msgid ""
+"This can be either an absolute path (as above) or a full URL starting with "
+"'http://'."
+msgstr ""
+"Aix pot ser b una ruta absoluta (com abans) o una URL completa que comenci "
+"per http:// ."
+
+#: contrib/redirects/models.py:13
+msgid "redirect"
+msgstr "redirecci"
+
+#: contrib/redirects/models.py:14
+msgid "redirects"
+msgstr "redireccions"
+
+#: 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 ""
+"Exemple: '/about/contact/'. Asseguri's de posar les barres al principi i al "
+"final."
+
+#: contrib/flatpages/models.py:9
+msgid "title"
+msgstr "ttol"
+
+#: contrib/flatpages/models.py:10
+msgid "content"
+msgstr "contingut"
+
+#: contrib/flatpages/models.py:11
+msgid "enable comments"
+msgstr "habilitar comentaris"
+
+#: contrib/flatpages/models.py:12
+msgid "template name"
+msgstr "nom de la plantilla"
+
+#: 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 ""
+"Exemple: 'flatpages/contact_page'. Si no el proporciona, el sistema "
+"utilitzar 'flatpages/default'."
+
+#: contrib/flatpages/models.py:14
+msgid "registration required"
+msgstr "ha de estar registrat"
+
+#: contrib/flatpages/models.py:14
+msgid "If this is checked, only logged-in users will be able to view the page."
+msgstr "Si est marcat, noms els usuaris registrats podran veure la pgina."
+
+#: contrib/flatpages/models.py:18
+msgid "flat page"
+msgstr "pgina esttica"
+
+#: contrib/flatpages/models.py:19
+msgid "flat pages"
+msgstr "pgines esttiques"
+
+#: contrib/comments/models.py:67 contrib/comments/models.py:166
+msgid "object ID"
+msgstr "ID de l'objete"
+
+#: contrib/comments/models.py:68
+msgid "headline"
+msgstr "encapalament"
+
+#: contrib/comments/models.py:69 contrib/comments/models.py:90
+#: contrib/comments/models.py:167
+msgid "comment"
+msgstr "comentari"
+
+#: contrib/comments/models.py:70
+msgid "rating #1"
+msgstr "calificaci 1"
+
+#: contrib/comments/models.py:71
+msgid "rating #2"
+msgstr "calificaci 2"
+
+#: contrib/comments/models.py:72
+msgid "rating #3"
+msgstr "calificaci 3"
+
+#: contrib/comments/models.py:73
+msgid "rating #4"
+msgstr "calificaci 4"
+
+#: contrib/comments/models.py:74
+msgid "rating #5"
+msgstr "calificaci 5"
+
+#: contrib/comments/models.py:75
+msgid "rating #6"
+msgstr "calificaci 6"
+
+#: contrib/comments/models.py:76
+msgid "rating #7"
+msgstr "calificaci 7"
+
+#: contrib/comments/models.py:77
+msgid "rating #8"
+msgstr "calificaci 8"
+
+#: contrib/comments/models.py:82
+msgid "is valid rating"
+msgstr "es calificaci vlida"
+
+#: contrib/comments/models.py:83 contrib/comments/models.py:169
+msgid "date/time submitted"
+msgstr "data/hora d'enviament"
+
+#: contrib/comments/models.py:84 contrib/comments/models.py:170
+msgid "is public"
+msgstr "s pblic"
+
+#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304
+msgid "IP address"
+msgstr "Adrea IP"
+
+#: contrib/comments/models.py:86
+msgid "is removed"
+msgstr "est eliminat"
+
+#: 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 ""
+"Marqui aquesta caixa si el comentari s inapropiat. En lloc seu es mostrar "
+"\"Aquest comentari ha estat eliminat\" "
+
+#: contrib/comments/models.py:91
+msgid "comments"
+msgstr "comentaris"
+
+#: contrib/comments/models.py:131 contrib/comments/models.py:207
+msgid "Content object"
+msgstr "Objete Contingut"
+
+#: 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 ""
+"Enviat per %(user)s el %(date)s\n"
+"\n"
+"%(comment)s\n"
+"\n"
+"http://%(domain)s%(url)s"
+
+#: contrib/comments/models.py:168
+msgid "person's name"
+msgstr "nom de la persona"
+
+#: contrib/comments/models.py:171
+msgid "ip address"
+msgstr "adrea ip"
+
+#: contrib/comments/models.py:173
+msgid "approved by staff"
+msgstr "aprovat per el \"staff\""
+
+#: contrib/comments/models.py:176
+msgid "free comment"
+msgstr "comentari lliure"
+
+#: contrib/comments/models.py:177
+msgid "free comments"
+msgstr "comentaris lliures"
+
+#: contrib/comments/models.py:233
+msgid "score"
+msgstr "puntuaci"
+
+#: contrib/comments/models.py:234
+msgid "score date"
+msgstr "data de la puntuaci"
+
+#: contrib/comments/models.py:237
+msgid "karma score"
+msgstr "puntuaci de karma"
+
+#: contrib/comments/models.py:238
+msgid "karma scores"
+msgstr "punts de karma"
+
+#: contrib/comments/models.py:242
+#, python-format
+msgid "%(score)d rating by %(user)s"
+msgstr "%(score)d punt per %(user)s"
+
+#: contrib/comments/models.py:258
+#, python-format
+msgid ""
+"This comment was flagged by %(user)s:\n"
+"\n"
+"%(text)s"
+msgstr ""
+"Aquest comentari va ser marcat per %(user)s:\n"
+"\n"
+"%(text)s"
+
+#: contrib/comments/models.py:265
+msgid "flag date"
+msgstr "data de la marca"
+
+#: contrib/comments/models.py:268
+msgid "user flag"
+msgstr "marca d'usuari"
+
+#: contrib/comments/models.py:269
+msgid "user flags"
+msgstr "marques d'usuari"
+
+#: contrib/comments/models.py:273
+#, python-format
+msgid "Flag by %r"
+msgstr "Marca de %r"
+
+#: contrib/comments/models.py:278
+msgid "deletion date"
+msgstr "data d'eliminaci"
+
+#: contrib/comments/models.py:280
+msgid "moderator deletion"
+msgstr "eliminaci del moderador"
+
+#: contrib/comments/models.py:281
+msgid "moderator deletions"
+msgstr "eliminacions del moderador"
+
+#: contrib/comments/models.py:285
+#, python-format
+msgid "Moderator deletion by %r"
+msgstr "eliminaci del moderador per %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 "Usuari:"
+
+#: 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 "Finalitzar sessi"
+
+#: contrib/comments/templates/comments/form.html:8
+#: contrib/admin/templates/admin/login.html:20
+msgid "Password:"
+msgstr "Contrasenya:"
+
+#: contrib/comments/templates/comments/form.html:8
+msgid "Forgotten your password?"
+msgstr "Contrasenya oblidada?"
+
+#: contrib/comments/templates/comments/form.html:12
+msgid "Ratings"
+msgstr "Calificacions"
+
+#: contrib/comments/templates/comments/form.html:12
+#: contrib/comments/templates/comments/form.html:23
+msgid "Required"
+msgstr "Requerit"
+
+#: contrib/comments/templates/comments/form.html:12
+#: contrib/comments/templates/comments/form.html:23
+msgid "Optional"
+msgstr "Opcional"
+
+#: contrib/comments/templates/comments/form.html:23
+msgid "Post a photo"
+msgstr "Enviar una fotografia"
+
+#: contrib/comments/templates/comments/form.html:28
+#: contrib/comments/templates/comments/freeform.html:5
+msgid "Comment:"
+msgstr "Comentari:"
+
+#: contrib/comments/templates/comments/form.html:35
+#: contrib/comments/templates/comments/freeform.html:10
+msgid "Preview comment"
+msgstr "Previsualitzar comentari"
+
+#: contrib/comments/templates/comments/freeform.html:4
+msgid "Your name:"
+msgstr "El seu nom:"
+
+#: contrib/comments/views/karma.py:19
+msgid "Anonymous users cannot vote"
+msgstr "Els usuaris annims no poden votar"
+
+#: contrib/comments/views/karma.py:23
+msgid "Invalid comment ID"
+msgstr "ID del comentari invlid"
+
+#: contrib/comments/views/karma.py:25
+msgid "No voting for yourself"
+msgstr "No pots votar-te a tu mateix"
+
+#: contrib/comments/views/comments.py:27
+msgid ""
+"This rating is required because you've entered at least one other rating."
+msgstr "Es precisa aquesta puntuaci perqu has introduit almenys un altre."
+
+#: 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] ""
+"Aquest comentari el va enviar un usuari que ha enviat menys de %(count)s "
+"comentari:\n"
+"\n"
+"%(text)s"
+msgstr[1] ""
+"Aquest comentari el va enviar un usuari que ha enviat menys de %(count)s "
+"comentaris:\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 ""
+"Aquest comentari va ser publicat per un usuari incomplert\n"
+"\n"
+"%(text)s"
+
+#: contrib/comments/views/comments.py:188
+#: contrib/comments/views/comments.py:280
+msgid "Only POSTs are allowed"
+msgstr "Noms s'admed 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 "Un o ms dels caps requerits no ha estat sotms"
+
+#: contrib/comments/views/comments.py:196
+#: contrib/comments/views/comments.py:286
+msgid "Somebody tampered with the comment form (security violation)"
+msgstr ""
+"Alg est jugant amb el formulari de comentaris (violaci de seguretat)"
+
+#: 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 ""
+"El formulari de comentaris tenia un parmetre 'target' invlid -- el ID del "
+"objecte era invlid"
+
+#: contrib/comments/views/comments.py:257
+#: contrib/comments/views/comments.py:321
+msgid "The comment form didn't provide either 'preview' or 'post'"
+msgstr ""
+"El formulari del comentari no ha proveit ni 'previsualitzar' ni 'enviar'"
+
+#: contrib/sites/models.py:10
+msgid "domain name"
+msgstr "nom del domini"
+
+#: contrib/sites/models.py:11
+msgid "display name"
+msgstr "nom per mostrar"
+
+#: contrib/sites/models.py:15
+msgid "site"
+msgstr "lloc"
+
+#: contrib/sites/models.py:16
+msgid "sites"
+msgstr "llocs"
+
+#: contrib/admin/filterspecs.py:40
+#, python-format
+msgid ""
+"<h3>By %s:</h3>\n"
+"<ul>\n"
+msgstr ""
+"<h3>Per %s:</h3>\n"
+"<ul>\n"
+
+#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
+#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169
+msgid "All"
+msgstr "Tots"
+
+#: contrib/admin/filterspecs.py:109
+msgid "Any date"
+msgstr "Cualsevol data"
+
+#: contrib/admin/filterspecs.py:110
+msgid "Today"
+msgstr "Avui"
+
+#: contrib/admin/filterspecs.py:113
+msgid "Past 7 days"
+msgstr "ltims 7 dies"
+
+#: contrib/admin/filterspecs.py:115
+msgid "This month"
+msgstr "Aquest mes"
+
+#: contrib/admin/filterspecs.py:117
+msgid "This year"
+msgstr "Aquest any"
+
+#: contrib/admin/models.py:16
+msgid "action time"
+msgstr "moment de l'acci"
+
+#: contrib/admin/models.py:19
+msgid "object id"
+msgstr "id del objecte"
+
+#: contrib/admin/models.py:20
+msgid "object repr"
+msgstr "'repr' de l'objecte"
+
+#: contrib/admin/models.py:21
+msgid "action flag"
+msgstr "marca de l'acci"
+
+#: contrib/admin/models.py:22
+msgid "change message"
+msgstr "missatge del canvi"
+
+#: contrib/admin/models.py:25
+msgid "log entry"
+msgstr "entrada del registre"
+
+#: contrib/admin/models.py:26
+msgid "log entries"
+msgstr "entrades del registre"
+
+#: contrib/admin/templatetags/admin_list.py:238
+msgid "All dates"
+msgstr "Totes les dates"
+
+#: 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 "Inici"
+
+#: 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 "Documentaci"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+msgid "Bookmarklets"
+msgstr "'Bookmarklets'"
+
+#: 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 "Canviar clau"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:5
+msgid "Documentation bookmarklets"
+msgstr "'Bookmarklets' de documentaci"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:9
+msgid ""
+"\n"
+"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
+"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
+"select the bookmarklet from any page in the site. Note that some of these\n"
+"bookmarklets require you to be viewing the site from a computer designated\n"
+"as \"internal\" (talk to your system administrator if you aren't sure if\n"
+"your computer is \"internal\").</p>\n"
+msgstr ""
+"\n"
+"<p class=\"help\">Per a instalar 'bookmarklets', arrosegui l'enlla a la "
+"seva barra de\n"
+"marcadors, o faci click amb el bot dret en l'enlla i afegeixi'l als "
+"marcadors.\n"
+"Ara pot escollir el 'bookmarklet' desde cualsevol pgina del lloc.\n"
+"Observi que alguns d'aquests 'bookmarklets' precisen que estigui veient\n"
+"el lloc desde un ordinador senyalat com a \"intern\" (parli\n"
+"amb el seu administrador de sistemes si no est segur de la condici del "
+"seu).</p>\n"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:19
+msgid "Documentation for this page"
+msgstr "Documentaci d'aquesta pgina"
+
+#: 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 ""
+"El porta desde cualsevol pgina de la documentaci a la vista que la genera."
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:22
+msgid "Show object ID"
+msgstr "Mostra el ID de l'objecte"
+
+#: 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 el 'content-type' (tipus de contingut) i el ID inequvoc de les "
+"pgines que representen un nic objecte."
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:25
+msgid "Edit this object (current window)"
+msgstr "Editar aquest objecte (finestra actual)"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:26
+msgid "Jumps to the admin page for pages that represent a single object."
+msgstr ""
+"El porta a la pgina d'administraci de pgines que representen un nic "
+"objecte."
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:28
+msgid "Edit this object (new window)"
+msgstr "Editar aquest objecte (nova finestra)"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:29
+msgid "As above, but opens the admin page in a new window."
+msgstr "Com abans, per obre la pgina d'administraci en una nova finestra."
+
+#: contrib/admin/templates/admin/submit_line.html:3
+#: contrib/admin/templates/admin/delete_confirmation.html:9
+msgid "Delete"
+msgstr "Eliminar"
+
+#: contrib/admin/templates/admin/submit_line.html:4
+msgid "Save as new"
+msgstr "Desar com a nou"
+
+#: contrib/admin/templates/admin/submit_line.html:5
+msgid "Save and add another"
+msgstr "Desar i afegir-ne un de nou"
+
+#: contrib/admin/templates/admin/submit_line.html:6
+msgid "Save and continue editing"
+msgstr "Desar i continuar editant"
+
+#: contrib/admin/templates/admin/submit_line.html:7
+msgid "Save"
+msgstr "Desar"
+
+#: contrib/admin/templates/admin/500.html:4
+msgid "Server error"
+msgstr "Error del servidor"
+
+#: contrib/admin/templates/admin/500.html:6
+msgid "Server error (500)"
+msgstr "Error del servidor (500)"
+
+#: contrib/admin/templates/admin/500.html:9
+msgid "Server Error <em>(500)</em>"
+msgstr "Error del servidor <em>(500)</em>"
+
+#: contrib/admin/templates/admin/500.html:10
+msgid ""
+"There's been an error. It's been reported to the site administrators via e-"
+"mail and should be fixed shortly. Thanks for your patience."
+msgstr ""
+"Hi ha hagut un error. S'ha informat als administradors del lloc per correu "
+"electrnic y hauria d'arreglar-se en breu. Grcies per la seva pacincia."
+
+#: contrib/admin/templates/admin/filter.html:2
+#, fuzzy, python-format
+msgid " By %(filter_title)s "
+msgstr "Per %(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 "Cercar"
+
+#: contrib/admin/templates/admin/search_form.html:10
+#, python-format
+msgid "1 result"
+msgid_plural "%(counter)s results"
+msgstr[0] ""
+msgstr[1] ""
+
+#: contrib/admin/templates/admin/search_form.html:10
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr ""
+
+#: contrib/admin/templates/admin/object_history.html:5
+#: contrib/admin/templates/admin/change_form.html:21
+msgid "History"
+msgstr "Histric"
+
+#: contrib/admin/templates/admin/object_history.html:18
+msgid "Date/time"
+msgstr "Data/hora"
+
+#: contrib/admin/templates/admin/object_history.html:19
+msgid "User"
+msgstr "Usuari"
+
+#: contrib/admin/templates/admin/object_history.html:20
+msgid "Action"
+msgstr "Acci"
+
+#: contrib/admin/templates/admin/object_history.html:26
+msgid "DATE_WITH_TIME_FULL"
+msgstr "F 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 ""
+"Aquest objecte no te historial de canvis. Probablement no va ser afegit "
+"utilitzant aquest lloc administratiu."
+
+#: 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 ""
+"Eliminar el/la %(object_name)s '%(object)s' provocaria l'eliminaci "
+"d'objectes relacionats, per el seu compte no te permisos per a esborrar els "
+"tipus d'objecte segents:"
+
+#: 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 ""
+"Est segur voler esborrar els/les %(object_name)s \"%(object)s\"? "
+"S'esborraran els segents elements relacionats:"
+
+#: contrib/admin/templates/admin/delete_confirmation.html:26
+msgid "Yes, I'm sure"
+msgstr "Si, estic segur"
+
+#: 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 "Afegir %(name)s"
+
+#: contrib/admin/templates/admin/change_form.html:15
+#: contrib/admin/templates/admin/index.html:28
+msgid "Add"
+msgstr "Afegir"
+
+#: contrib/admin/templates/admin/change_form.html:22
+msgid "View on site"
+msgstr "Veure en el lloc"
+
+#: 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] "Si us plau, corregeixi l'error mostrat abaix."
+msgstr[1] "Si us plau, corregeixi els errors mostrats abaix."
+
+#: contrib/admin/templates/admin/change_form.html:50
+msgid "Ordering"
+msgstr "Ordre"
+
+#: contrib/admin/templates/admin/change_form.html:53
+msgid "Order:"
+msgstr "Ordre:"
+
+#: contrib/admin/templates/admin/base.html:25
+msgid "Welcome,"
+msgstr "Benvingut,"
+
+#: contrib/admin/templates/admin/404.html:4
+#: contrib/admin/templates/admin/404.html:8
+msgid "Page not found"
+msgstr "No s'ha pogut trobar la pgina"
+
+#: contrib/admin/templates/admin/404.html:10
+msgid "We're sorry, but the requested page could not be found."
+msgstr "Ho sentim, per no s'ha pogut trobar la pgina solicitada"
+
+#: contrib/admin/templates/admin/login.html:25
+#: contrib/admin/views/decorators.py:24
+msgid "Log in"
+msgstr "Iniciar sessi"
+
+#: contrib/admin/templates/admin/index.html:17
+#, python-format
+msgid "Models available in the %(name)s application."
+msgstr "Models disponibles en la aplicaci %(name)s."
+
+#: contrib/admin/templates/admin/index.html:18
+#, fuzzy, python-format
+msgid "%(name)s"
+msgstr "Afegir %(name)s"
+
+#: contrib/admin/templates/admin/index.html:34
+msgid "Change"
+msgstr "Modificar"
+
+#: contrib/admin/templates/admin/index.html:44
+msgid "You don't have permission to edit anything."
+msgstr "No t perms per editar res."
+
+#: contrib/admin/templates/admin/index.html:52
+msgid "Recent Actions"
+msgstr "Accions recents"
+
+#: contrib/admin/templates/admin/index.html:53
+msgid "My Actions"
+msgstr "Les meves accions"
+
+#: contrib/admin/templates/admin/index.html:57
+msgid "None available"
+msgstr "Cap disponible"
+
+#: contrib/admin/templates/admin/base_site.html:4
+msgid "Django site admin"
+msgstr "Lloc administratiu de Django"
+
+#: contrib/admin/templates/admin/base_site.html:7
+msgid "Django administration"
+msgstr "Adminsitraci de 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
+#, fuzzy
+msgid "Username"
+msgstr "Usuari:"
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:18
+#: contrib/admin/templates/admin/auth/user/change_password.html:34
+#, fuzzy
+msgid "Password"
+msgstr "Contrasenya:"
+
+#: 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 "Canvi de clau"
+
+#: 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 <strong>%(username)s</strong>."
+msgstr ""
+
+#: contrib/admin/templates/widget/file.html:2
+msgid "Currently:"
+msgstr "Actualment:"
+
+#: contrib/admin/templates/widget/file.html:3
+msgid "Change:"
+msgstr "Modificar:"
+
+#: contrib/admin/templates/widget/date_time.html:3
+msgid "Date:"
+msgstr "Data:"
+
+#: contrib/admin/templates/widget/date_time.html:4
+msgid "Time:"
+msgstr "Hora:"
+
+#: contrib/admin/templates/registration/logged_out.html:8
+msgid "Thanks for spending some quality time with the Web site today."
+msgstr "Grcies per emprar algun temps de cualitat amb el lloc web avui."
+
+#: contrib/admin/templates/registration/logged_out.html:10
+msgid "Log in again"
+msgstr "Iniciar sessi de nou"
+
+#: contrib/admin/templates/registration/password_reset_email.html:2
+msgid "You're receiving this e-mail because you requested a password reset"
+msgstr ""
+"Est rebent aquest missatge degut a que va solicitar un restabliment de "
+"contrasenya."
+
+#: contrib/admin/templates/registration/password_reset_email.html:3
+#, python-format
+msgid "for your user account at %(site_name)s"
+msgstr "del seu compte d'usuari a %(site_name)s."
+
+#: contrib/admin/templates/registration/password_reset_email.html:5
+#, python-format
+msgid "Your new password is: %(new_password)s"
+msgstr "La seva nova contrasenya s: %(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 "Sentis lliure de canviar-la en aquesta pgina:"
+
+#: contrib/admin/templates/registration/password_reset_email.html:11
+msgid "Your username, in case you've forgotten:"
+msgstr "El seu nom d'usuari, en cas d'haver-lo oblidat:"
+
+#: contrib/admin/templates/registration/password_reset_email.html:13
+msgid "Thanks for using our site!"
+msgstr "Grcies per fer us del nostre lloc!"
+
+#: contrib/admin/templates/registration/password_reset_email.html:15
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "L'equip de %(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 "Restablir contrasenya"
+
+#: contrib/admin/templates/registration/password_reset_done.html:6
+#: contrib/admin/templates/registration/password_reset_done.html:10
+msgid "Password reset successful"
+msgstr "Contrasenya restaber-ta amb xit"
+
+#: 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 ""
+"Li hem enviat una contrasenya nova a l'adrea de correu electrnic que ens "
+"ha indicat. L'hauria de rebre en breu."
+
+#: 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 "Canvi de clau"
+
+#: 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 ""
+"Si us plau, introdueixi la seva contrasenya antiga, per seguretat, i tot "
+"seguit introdueixi la seva nova contrasenya dues vegades per verificar que "
+"l'ha escrit correctament."
+
+#: contrib/admin/templates/registration/password_change_form.html:17
+msgid "Old password:"
+msgstr "Contrasenya antiga:"
+
+#: contrib/admin/templates/registration/password_change_form.html:19
+msgid "New password:"
+msgstr "Contrasenya nova:"
+
+#: contrib/admin/templates/registration/password_change_form.html:21
+msgid "Confirm password:"
+msgstr "Confirmar contrasenya:"
+
+#: contrib/admin/templates/registration/password_change_form.html:23
+msgid "Change my password"
+msgstr "Canviar la meva clau:"
+
+#: contrib/admin/templates/registration/password_change_done.html:6
+#: contrib/admin/templates/registration/password_change_done.html:10
+msgid "Password change successful"
+msgstr "Canvi de clau exit"
+
+#: contrib/admin/templates/registration/password_change_done.html:12
+msgid "Your password was changed."
+msgstr "La seva clau ha estat canviada."
+
+#: 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 ""
+"Ha oblidat la seva contrasenya? Introdueixi la seva adrea de correu "
+"electrnic i crearem una nova que li enviarem per correu."
+
+#: contrib/admin/templates/registration/password_reset_form.html:16
+msgid "E-mail address:"
+msgstr "Adrea de correu electrnic:"
+
+#: contrib/admin/templates/registration/password_reset_form.html:16
+msgid "Reset my password"
+msgstr "Restablir la meva contrasenya"
+
+#: contrib/admin/views/main.py:223
+msgid "Site administration"
+msgstr "Lloc administratiu"
+
+#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:19
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was added successfully."
+msgstr "El/la %(name)s \"%(obj)s\".ha estat agregat/da amb xit."
+
+#: 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 "Pot editar-lo de nou abaix."
+
+#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356
+#, python-format
+msgid "You may add another %s below."
+msgstr "Pot agregar un altre %s abaix."
+
+#: contrib/admin/views/main.py:289
+#, python-format
+msgid "Add %s"
+msgstr "Agregar %s"
+
+#: contrib/admin/views/main.py:335
+#, python-format
+msgid "Added %s."
+msgstr "Agregat %s."
+
+#: contrib/admin/views/main.py:337
+#, python-format
+msgid "Changed %s."
+msgstr "Modificat %s."
+
+#: contrib/admin/views/main.py:339
+#, python-format
+msgid "Deleted %s."
+msgstr "Eliminat %s."
+
+#: contrib/admin/views/main.py:342
+msgid "No fields changed."
+msgstr "Cap camp canviat."
+
+#: contrib/admin/views/main.py:345
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was changed successfully."
+msgstr "S'ha modificat amb xist el/la %(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 ""
+"S'ha agregat amb xit el/la %(name)s \"%(obj)s\". Pot editar-lo de nou abaix."
+
+#: contrib/admin/views/main.py:391
+#, python-format
+msgid "Change %s"
+msgstr "Modificar %s"
+
+#: contrib/admin/views/main.py:473
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
+msgstr "Un o ms %(fieldname)s en %(name)s: %(obj)s"
+
+#: contrib/admin/views/main.py:478
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s:"
+msgstr "Un o ms %(fieldname)s en %(name)s:"
+
+#: contrib/admin/views/main.py:511
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr "El/la %(name)s \"%(obj)s\".ha estat eliminat amb xit."
+
+#: contrib/admin/views/main.py:514
+msgid "Are you sure?"
+msgstr "Est segur?"
+
+#: contrib/admin/views/main.py:536
+#, python-format
+msgid "Change history: %s"
+msgstr "Modificar histric: %s"
+
+#: contrib/admin/views/main.py:570
+#, python-format
+msgid "Select %s"
+msgstr "Seleccioni %s"
+
+#: contrib/admin/views/main.py:570
+#, python-format
+msgid "Select %s to change"
+msgstr "Seleccioni %s per modificar"
+
+#: 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 ""
+"Si us plau, identifiquis de nou doncs la seva sessi ha expirat. No es "
+"preocupi, el seu enviament est emmagatzemat."
+
+#: 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 ""
+"Sembla ser que el seu navegador no est configurat per acceptar "
+"'cookies' (galetes). Si us plau, habiliti les 'cookies', recarregui aquesta "
+"pgina i provi-ho de nou. "
+
+#: contrib/admin/views/decorators.py:83
+msgid "Usernames cannot contain the '@' character."
+msgstr "Els noms d'usuari no poden contenir el caracter '@'."
+
+#: contrib/admin/views/decorators.py:85
+#, python-format
+msgid "Your e-mail address is not your username. Try '%s' instead."
+msgstr ""
+"La seva adrea de correu no s el seu nom d'usuari. Provi '%s' en tot cas."
+
+#: 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
+#, fuzzy, python-format
+msgid "App %r not found"
+msgstr "No s'ha pogut trobar la pgina"
+
+#: contrib/admin/views/doc.py:171
+#, python-format
+msgid "Model %r not found in app %r"
+msgstr ""
+
+#: contrib/admin/views/doc.py:183
+#, python-format
+msgid "the related `%s.%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
+msgid "model:"
+msgstr ""
+
+#: contrib/admin/views/doc.py:214
+#, python-format
+msgid "related `%s.%s` objects"
+msgstr ""
+
+#: contrib/admin/views/doc.py:219
+#, python-format
+msgid "all %s"
+msgstr ""
+
+#: contrib/admin/views/doc.py:224
+#, python-format
+msgid "number of %s"
+msgstr ""
+
+#: contrib/admin/views/doc.py:229
+#, python-format
+msgid "Fields on %s objects"
+msgstr ""
+
+#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301
+#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309
+#: contrib/admin/views/doc.py:310 contrib/admin/views/doc.py:312
+msgid "Integer"
+msgstr "Enter"
+
+#: contrib/admin/views/doc.py:292
+msgid "Boolean (Either True or False)"
+msgstr "Boole (Verdader o Fals)"
+
+#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311
+#, python-format
+msgid "String (up to %(maxlength)s)"
+msgstr "Cadena (fins a %(maxlength)s)"
+
+#: contrib/admin/views/doc.py:294
+msgid "Comma-separated integers"
+msgstr "Enters separats per comes"
+
+#: contrib/admin/views/doc.py:295
+msgid "Date (without time)"
+msgstr "Data (sense hora)"
+
+#: contrib/admin/views/doc.py:296
+msgid "Date (with time)"
+msgstr "Data (amb hora)"
+
+#: contrib/admin/views/doc.py:297
+msgid "E-mail address"
+msgstr "Adrea de correu electrnic"
+
+#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299
+#: contrib/admin/views/doc.py:302
+msgid "File path"
+msgstr "Ruta del fitxer"
+
+#: contrib/admin/views/doc.py:300
+msgid "Decimal number"
+msgstr "Nmero decimal"
+
+#: contrib/admin/views/doc.py:306
+msgid "Boolean (Either True, False or None)"
+msgstr "Boole (Verdader, Fals o 'None' (cap))"
+
+#: contrib/admin/views/doc.py:307
+msgid "Relation to parent model"
+msgstr "Relaci amb el model pare"
+
+#: contrib/admin/views/doc.py:308
+msgid "Phone number"
+msgstr "Nmero de telfon"
+
+#: contrib/admin/views/doc.py:313
+msgid "Text"
+msgstr "Texte"
+
+#: contrib/admin/views/doc.py:314
+msgid "Time"
+msgstr "Hora"
+
+#: contrib/admin/views/doc.py:316
+msgid "U.S. state (two uppercase letters)"
+msgstr "Estat dels E.U.A. (dos lletres majscules)"
+
+#: 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 ""
+
+#: contrib/admin/views/auth.py:30
+#, fuzzy
+msgid "Add user"
+msgstr "Agregar %s"
+
+#: contrib/admin/views/auth.py:57
+#, fuzzy
+msgid "Password changed successfully."
+msgstr "Canvi de clau exit"
+
+#: contrib/admin/views/auth.py:64
+#, fuzzy, python-format
+msgid "Change password: %s"
+msgstr "Canviar clau"
+
+#: newforms/fields.py:101 newforms/fields.py:254
+#, fuzzy, python-format
+msgid "Ensure this value has at most %d characters."
+msgstr "Aseguris de que el seu texte t menys de %s caracter."
+
+#: newforms/fields.py:103 newforms/fields.py:256
+#, fuzzy, python-format
+msgid "Ensure this value has at least %d characters."
+msgstr "Aseguris de que el seu texte t menys de %s caracter."
+
+#: newforms/fields.py:126 core/validators.py:120
+msgid "Enter a whole number."
+msgstr "Introdueixi un nmero senser."
+
+#: newforms/fields.py:128
+#, fuzzy, python-format
+msgid "Ensure this value is less than or equal to %s."
+msgstr "Aquest valor ha de ser una potncia de %s."
+
+#: newforms/fields.py:130
+#, python-format
+msgid "Ensure this value is greater than or equal to %s."
+msgstr ""
+
+#: newforms/fields.py:163
+#, fuzzy
+msgid "Enter a valid date."
+msgstr "Introdueixi un nom de fitxer vlid."
+
+#: newforms/fields.py:190
+#, fuzzy
+msgid "Enter a valid time."
+msgstr "Introdueixi un nom de fitxer vlid."
+
+#: newforms/fields.py:226
+#, fuzzy
+msgid "Enter a valid date/time."
+msgstr "Introdueixi un nom de fitxer vlid."
+
+#: newforms/fields.py:240
+#, fuzzy
+msgid "Enter a valid value."
+msgstr "Introdueixi un nom de fitxer vlid."
+
+#: newforms/fields.py:269 core/validators.py:161
+msgid "Enter a valid e-mail address."
+msgstr "Introdueixi una adrea de correu vlida."
+
+#: newforms/fields.py:287 newforms/fields.py:309
+#, fuzzy
+msgid "Enter a valid URL."
+msgstr "Introdueixi un nom de fitxer vlid."
+
+#: newforms/fields.py:311
+#, fuzzy
+msgid "This URL appears to be a broken link."
+msgstr "La URL %ss un enlla trencat."
+
+#: newforms/fields.py:359
+#, fuzzy
+msgid "Select a valid choice. That choice is not one of the available choices."
+msgstr "Esculli una opci vlida; %(data)s' no est dintre de %(choices)s."
+
+#: newforms/fields.py:377 newforms/fields.py:453
+#, fuzzy
+msgid "Enter a list of values."
+msgstr "Introdueixi un nom de fitxer vlid."
+
+#: newforms/fields.py:386
+#, fuzzy, python-format
+msgid "Select a valid choice. %s is not one of the available choices."
+msgstr "Esculli una opci vlida; %(data)s' no est dintre de %(choices)s."
+
+#: template/defaultfilters.py:436
+msgid "yes,no,maybe"
+msgstr "si,no,potser"
+
+#: views/generic/create_update.py:43
+#, fuzzy, python-format
+msgid "The %(verbose_name)s was created successfully."
+msgstr "S'ha modificat amb xist el/la %(name)s \"%(obj)s."
+
+#: views/generic/create_update.py:117
+#, fuzzy, python-format
+msgid "The %(verbose_name)s was updated successfully."
+msgstr "El/la %(name)s \"%(obj)s\".ha estat eliminat amb xit."
+
+#: views/generic/create_update.py:184
+#, fuzzy, python-format
+msgid "The %(verbose_name)s was deleted."
+msgstr "L'equip de %(site_name)s"
+
+#: core/validators.py:64
+msgid "This value must contain only letters, numbers and underscores."
+msgstr "Aquest valor ha de contenir noms nmeros, guions, i guions baixos."
+
+#: core/validators.py:68
+msgid ""
+"This value must contain only letters, numbers, underscores, dashes or "
+"slashes."
+msgstr ""
+"Aquest valor ha de contenir noms lletres, nmeros, guions, guions baixos, i "
+"barres (/)."
+
+#: core/validators.py:72
+#, fuzzy
+msgid "This value must contain only letters, numbers, underscores or hyphens."
+msgstr ""
+"Aquest valor ha de contenir noms lletres, nmeros, guions, guions baixos, i "
+"barres (/)."
+
+#: core/validators.py:76
+msgid "Uppercase letters are not allowed here."
+msgstr "No es permeten majscules aqu."
+
+#: core/validators.py:80
+msgid "Lowercase letters are not allowed here."
+msgstr "No es permeten minscules aqu."
+
+#: core/validators.py:87
+msgid "Enter only digits separated by commas."
+msgstr "Introdueixi noms dgits separats per comes."
+
+#: core/validators.py:99
+msgid "Enter valid e-mail addresses separated by commas."
+msgstr "Introdueixi adreces de correu electrnic vlides separades per comes."
+
+#: core/validators.py:103
+msgid "Please enter a valid IP address."
+msgstr "Per favor introdueixi una adrea IP vlida."
+
+#: core/validators.py:107
+msgid "Empty values are not allowed here."
+msgstr "No s'admeten valor buits."
+
+#: core/validators.py:111
+msgid "Non-numeric characters aren't allowed here."
+msgstr "No s'admeten caracters no numrics."
+
+#: core/validators.py:115
+msgid "This value can't be comprised solely of digits."
+msgstr "Aquest valor no pot contenir noms dgits."
+
+#: core/validators.py:124
+msgid "Only alphabetical characters are allowed here."
+msgstr "Noms s'admeted caracters alfabtics aqu."
+
+#: core/validators.py:139
+msgid "Year must be 1900 or later."
+msgstr ""
+
+#: core/validators.py:143
+#, fuzzy, python-format
+msgid "Invalid date: %s."
+msgstr "URL invalida: %s"
+
+#: core/validators.py:152
+msgid "Enter a valid time in HH:MM format."
+msgstr "Introdueixi una hora vlida en el format 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 ""
+"Envii una imatge vilda. El fitxer que ha enviat no era una imatge o estaba "
+"corrupte."
+
+#: core/validators.py:184
+#, python-format
+msgid "The URL %s does not point to a valid image."
+msgstr "La URL %s no apunta una imatge vlida."
+
+#: core/validators.py:188
+#, python-format
+msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
+msgstr ""
+"El nmeros de telfon han de guardar-se en el format XXX-XXX-XXXX. \"%s\" no "
+"s vlid."
+
+#: core/validators.py:196
+#, python-format
+msgid "The URL %s does not point to a valid QuickTime video."
+msgstr "La URL %s no apunta a un video QuickTime vlid."
+
+#: core/validators.py:200
+msgid "A valid URL is required."
+msgstr "Es precisa d'una URL vlida."
+
+#: core/validators.py:214
+#, python-format
+msgid ""
+"Valid HTML is required. Specific errors are:\n"
+"%s"
+msgstr ""
+"Es precisa HTML vlid. Els errors especfics sn:\n"
+"%s"
+
+#: core/validators.py:221
+#, python-format
+msgid "Badly formed XML: %s"
+msgstr "XML incorrectament formatejat: %s"
+
+#: core/validators.py:238
+#, python-format
+msgid "Invalid URL: %s"
+msgstr "URL invalida: %s"
+
+#: core/validators.py:243 core/validators.py:245
+#, python-format
+msgid "The URL %s is a broken link."
+msgstr "La URL %ss un enlla trencat."
+
+#: core/validators.py:251
+msgid "Enter a valid U.S. state abbreviation."
+msgstr "Introdueixi una abreviatura vlida d'estat d'els E.U.A.."
+
+#: 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] "Vigili la seva boca! Aqu no admetem la paraula: %s."
+msgstr[1] "Vigili la seva boca! Aqu no admetem les paraules: %s."
+
+#: core/validators.py:272
+#, python-format
+msgid "This field must match the '%s' field."
+msgstr "Aquest camp ha de concordar amb el camp '%s'."
+
+#: core/validators.py:291
+msgid "Please enter something for at least one field."
+msgstr "Si us plau, introdueixi alguna cosa alemnys en un camp."
+
+#: core/validators.py:300 core/validators.py:311
+msgid "Please enter both fields or leave them both empty."
+msgstr "Si us plau, ompli els dos camps o deixi'ls tots dos en blanc."
+
+#: core/validators.py:318
+#, python-format
+msgid "This field must be given if %(field)s is %(value)s"
+msgstr "S'ha de proporcionar aquest camps si %(field)s s %(value)s"
+
+#: core/validators.py:330
+#, python-format
+msgid "This field must be given if %(field)s is not %(value)s"
+msgstr "S'ha de proporcionar aquest camps si %(field)s no s %(value)s"
+
+#: core/validators.py:349
+msgid "Duplicate values are not allowed."
+msgstr "No s'admeten valors duplicats."
+
+#: core/validators.py:364
+#, fuzzy, python-format
+msgid "This value must be between %s and %s."
+msgstr "Aquest valor ha de ser una potncia de %s."
+
+#: core/validators.py:366
+#, fuzzy, python-format
+msgid "This value must be at least %s."
+msgstr "Aquest valor ha de ser una potncia de %s."
+
+#: core/validators.py:368
+#, fuzzy, python-format
+msgid "This value must be no more than %s."
+msgstr "Aquest valor ha de ser una potncia de %s."
+
+#: core/validators.py:404
+#, python-format
+msgid "This value must be a power of %s."
+msgstr "Aquest valor ha de ser una potncia de %s."
+
+#: core/validators.py:415
+msgid "Please enter a valid decimal number."
+msgstr "Si us plau, introdueixi un nmero decimal vlid."
+
+#: 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] ""
+"Si us plau, introdueixi un nmero decimal vlid amb no ms de %s digit."
+msgstr[1] ""
+"Si us plau, introdueixi un nmero decimal vlid amb no ms de %s digits."
+
+#: 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] ""
+"Si us plau, introdueixi un nmero decimal vlid amb no ms de %s digit."
+msgstr[1] ""
+"Si us plau, introdueixi un nmero decimal vlid amb no ms de %s digits."
+
+#: 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] ""
+"Si us plau, introdueixi un nmero decimal vlid amb no ms de %s digit "
+"decimal."
+msgstr[1] ""
+"Si us plau, introdueixi un nmero decimal vlid amb no ms de %s digits "
+"decimals."
+
+#: core/validators.py:435
+#, python-format
+msgid "Make sure your uploaded file is at least %s bytes big."
+msgstr "Asseguris de que el fitxer que ha enviat t, com a mnim, %s bytes."
+
+#: core/validators.py:436
+#, python-format
+msgid "Make sure your uploaded file is at most %s bytes big."
+msgstr "Asseguris de que el fitxer que ha enviat t, com a mxim %s bytes."
+
+#: core/validators.py:453
+msgid "The format for this field is wrong."
+msgstr "El format per aquest camp s incorrecte."
+
+#: core/validators.py:468
+msgid "This field is invalid."
+msgstr "El camp no s vlid."
+
+#: core/validators.py:504
+#, python-format
+msgid "Could not retrieve anything from %s."
+msgstr "No s'ha pogut obtenir res de %s."
+
+#: core/validators.py:507
+#, python-format
+msgid ""
+"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
+msgstr ""
+"La URL %(url)s ha va tornar la capcelera Content-Type '%(contenttype)s', que "
+"no s vlida."
+
+#: core/validators.py:540
+#, python-format
+msgid ""
+"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
+"\"%(start)s\".)"
+msgstr ""
+"Si us plau, tanqui l'etiqueta %(tag)s desde la linea %(line)s. (La linea "
+"comena amb \"%(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 ""
+"Part del text que comena en la linea %(line)s no est perms en aquest "
+"contexte. (La linea comena per \"%(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 ""
+"El \"%(attr)s\" de la linea %(line)s no s un atribut vlido. (La linea "
+"comena per \"%(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 ""
+"La \"<%(tag)s>\" de la linea %(line)s no s una etiqueta vlida. (La lnea "
+"comena per \"%(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 ""
+"A una etiqueta de la linea %(line)s li falta un o ms atributs requerits.(La "
+"linea comena per \"%(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 ""
+"L'atribut \"%(attr)s\" de la linena %(line)s t un valor que no s vlid. "
+"(La linea comena per \"%(start)s\".)"
+
+#~ msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
+#~ msgstr "Ha <a href=\"/password_reset/\">oblidat la seva clau</a>?"
+
+#~ msgid "Use '[algo]$[salt]$[hexdigest]'"
+#~ msgstr "Utilitzi '[algo]$[salt]$[hexdigest]'"
diff --git a/django/conf/locale/ca/LC_MESSAGES/djangojs.mo b/django/conf/locale/ca/LC_MESSAGES/djangojs.mo
new file mode 100644
index 0000000000..412c2eb876
--- /dev/null
+++ b/django/conf/locale/ca/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/django/conf/locale/ca/LC_MESSAGES/djangojs.po b/django/conf/locale/ca/LC_MESSAGES/djangojs.po
new file mode 100644
index 0000000000..8903957b86
--- /dev/null
+++ b/django/conf/locale/ca/LC_MESSAGES/djangojs.po
@@ -0,0 +1,121 @@
+# translation of djangojs.po to
+# Spanish translation for the django-admin JS files.
+# Copyright (C)
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Jorge Gajon <gajon@gajon.org>, 2005.
+# Marc Fargas <marc@fargas.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: djangojs\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-02-15 11:05+1100\n"
+"PO-Revision-Date: 2007-01-19 10:30+0100\n"
+"Last-Translator: Marc Fargas <marc@fargas.com>\n"
+"Language-Team: <es@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: contrib/admin/media/js/SelectFilter2.js:33
+#, perl-format
+msgid "Available %s"
+msgstr "%s Disponibles"
+
+#: contrib/admin/media/js/SelectFilter2.js:41
+msgid "Choose all"
+msgstr "Seleccionar tots"
+
+#: contrib/admin/media/js/SelectFilter2.js:46
+msgid "Add"
+msgstr "Afegir"
+
+#: contrib/admin/media/js/SelectFilter2.js:48
+msgid "Remove"
+msgstr "Eliminar"
+
+#: contrib/admin/media/js/SelectFilter2.js:53
+#, perl-format
+msgid "Chosen %s"
+msgstr "%s Escollits"
+
+#: contrib/admin/media/js/SelectFilter2.js:54
+msgid "Select your choice(s) and click "
+msgstr "Faci les seves seleccions i faci click a"
+
+#: contrib/admin/media/js/SelectFilter2.js:59
+msgid "Clear all"
+msgstr "Deseleccionar tots"
+
+#: 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 ""
+"Febrer Mar Abril Maig Juny Juliol Agost Setembre Octubre Novembre Desembre"
+
+#: contrib/admin/media/js/dateparse.js:33
+msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
+msgstr "Diumenge Dilluns Dimarts Dimecres Dijous Divendres Dissabte"
+
+#: contrib/admin/media/js/calendar.js:25
+msgid "S M T W T F S"
+msgstr "D L M X J V S"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
+msgid "Now"
+msgstr "Ara"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
+msgid "Clock"
+msgstr "Rellotje"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
+msgid "Choose a time"
+msgstr "Esculli una hora"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
+msgid "Midnight"
+msgstr "Mitja nit"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
+msgid "6 a.m."
+msgstr "6 a.m."
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
+msgid "Noon"
+msgstr "Migdia"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
+msgid "Cancel"
+msgstr "Cancellar"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
+msgid "Today"
+msgstr "Avui"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
+msgid "Calendar"
+msgstr "Calendari"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
+msgid "Yesterday"
+msgstr "Ahir"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
+msgid "Tomorrow"
+msgstr "Dem"
+
+#: 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 ""
diff --git a/django/conf/locale/de/LC_MESSAGES/django.mo b/django/conf/locale/de/LC_MESSAGES/django.mo
index 0dd2b26dff..b5c518c13c 100644
--- a/django/conf/locale/de/LC_MESSAGES/django.mo
+++ b/django/conf/locale/de/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/de/LC_MESSAGES/django.po b/django/conf/locale/de/LC_MESSAGES/django.po
index c5e3f4282a..2f0991c8cc 100644
--- a/django/conf/locale/de/LC_MESSAGES/django.po
+++ b/django/conf/locale/de/LC_MESSAGES/django.po
@@ -1,4 +1,3 @@
-# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
@@ -7,348 +6,152 @@ msgid ""
msgstr ""
"Project-Id-Version: Django 1.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-11-15 18:35+0100\n"
-"PO-Revision-Date: 2005-10-08 00:03+0200\n"
-"Last-Translator: Georg Bauer <gb@bofh.ms>\n"
+"POT-Creation-Date: 2007-02-05 02:56+0100\n"
+"PO-Revision-Date: 2007-02-05 03:19+0100\n"
+"Last-Translator: Dirk Eschler <dirk.eschler@gmx.net>\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-1\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"
-#: contrib/comments/models.py:67 contrib/comments/models.py:166
-msgid "object ID"
-msgstr "Objekt ID"
-
-#: contrib/comments/models.py:68
-msgid "headline"
-msgstr "berschrift"
-
-#: contrib/comments/models.py:69 contrib/comments/models.py:90
-#: contrib/comments/models.py:167
-msgid "comment"
-msgstr "Kommentar"
-
-#: contrib/comments/models.py:70
-msgid "rating #1"
-msgstr "Bewertung #1"
-
-#: contrib/comments/models.py:71
-msgid "rating #2"
-msgstr "Bewertung #2"
-
-#: contrib/comments/models.py:72
-msgid "rating #3"
-msgstr "Bewertung #3"
-
-#: contrib/comments/models.py:73
-msgid "rating #4"
-msgstr "Bewertung #4"
-
-#: contrib/comments/models.py:74
-msgid "rating #5"
-msgstr "Bewertung #5"
-
-#: contrib/comments/models.py:75
-msgid "rating #6"
-msgstr "Bewertung #6"
-
-#: contrib/comments/models.py:76
-msgid "rating #7"
-msgstr "Bewertung #7"
-
-#: contrib/comments/models.py:77
-msgid "rating #8"
-msgstr "Bewertung #8"
-
-#: contrib/comments/models.py:82
-msgid "is valid rating"
-msgstr "ist eine Bewertung"
-
-#: 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
-msgid "is public"
-msgstr "ist ffentlich"
-
-#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304
-msgid "IP address"
-msgstr "IP-Adresse"
-
-#: contrib/comments/models.py:86
-msgid "is removed"
-msgstr "ist gelscht"
-
-#: 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. Es wird dann eine "
-"\"Dieser Kommentar wurde entfernt\" Meldung statt dessen angezeigt."
-
-#: contrib/comments/models.py:91
-msgid "comments"
-msgstr "Kommentare"
-
-#: contrib/comments/models.py:131 contrib/comments/models.py:207
-msgid "Content object"
-msgstr "Inhaltsobjekt"
-
-#: 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 ""
-"Geschrieben von %(user)s am %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:168
-msgid "person's name"
-msgstr "Autorname"
-
-#: contrib/comments/models.py:171
-msgid "ip address"
-msgstr "IP-Adresse"
-
-#: contrib/comments/models.py:173
-msgid "approved by staff"
-msgstr "Besttigt vom Betreiber"
-
-#: contrib/comments/models.py:176
-msgid "free comment"
-msgstr "Freier Kommentar"
-
-#: contrib/comments/models.py:177
-msgid "free comments"
-msgstr "Freie Kommentare"
-
-#: contrib/comments/models.py:233
-msgid "score"
-msgstr "Bewertung"
-
-#: contrib/comments/models.py:234
-msgid "score date"
-msgstr "Bewertungsdatum"
-
-#: contrib/comments/models.py:237
-msgid "karma score"
-msgstr "Karma Bewertung"
-
-#: contrib/comments/models.py:238
-msgid "karma scores"
-msgstr "Karma Bewertungen"
+#: .\conf\global_settings.py:39
+msgid "Arabic"
+msgstr "Arabisch"
-#: contrib/comments/models.py:242
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(score)d Bewertung von %(user)s"
+#: .\conf\global_settings.py:40
+msgid "Bengali"
+msgstr "Bengali"
-#: contrib/comments/models.py:258
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Dieser Kommentar ist von %(user)s markiert:\n"
-"\n"
-"%(text)s"
+#: .\conf\global_settings.py:41
+msgid "Czech"
+msgstr "Tschechisch"
-#: contrib/comments/models.py:265
-msgid "flag date"
-msgstr "Kennzeichnungsdatum"
+#: .\conf\global_settings.py:42
+msgid "Welsh"
+msgstr "Walisisch"
-#: contrib/comments/models.py:268
-msgid "user flag"
-msgstr "Benutzerkennzeichnung"
+#: .\conf\global_settings.py:43
+msgid "Danish"
+msgstr "Dänisch"
-#: contrib/comments/models.py:269
-msgid "user flags"
-msgstr "Benutzerkennzeichnungen"
+#: .\conf\global_settings.py:44
+msgid "German"
+msgstr "Deutsch"
-#: contrib/comments/models.py:273
-#, python-format
-msgid "Flag by %r"
-msgstr "Gekennzeichnet von %r"
+#: .\conf\global_settings.py:45
+msgid "Greek"
+msgstr "Griechisch"
-#: contrib/comments/models.py:278
-msgid "deletion date"
-msgstr "Lschdatum"
+#: .\conf\global_settings.py:46
+msgid "English"
+msgstr "Englisch"
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "Lschung vom Moderator"
+#: .\conf\global_settings.py:47
+msgid "Spanish"
+msgstr "Spanisch"
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "Lschungen vom Moderator"
+#: .\conf\global_settings.py:48
+msgid "Argentinean Spanish"
+msgstr "Argentinisches Spanisch"
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Vom Moderator %r gelscht"
+#: .\conf\global_settings.py:49
+msgid "Finnish"
+msgstr "Finnisch"
-#: contrib/comments/views/karma.py:19
-msgid "Anonymous users cannot vote"
-msgstr "Anonyme Benutzer knnen nicht abstimmen"
+#: .\conf\global_settings.py:50
+msgid "French"
+msgstr "Französisch"
-#: contrib/comments/views/karma.py:23
-msgid "Invalid comment ID"
-msgstr "Ungltige Kommentar-ID"
+#: .\conf\global_settings.py:51
+msgid "Galician"
+msgstr "Galicisch"
-#: contrib/comments/views/karma.py:25
-msgid "No voting for yourself"
-msgstr "Keine Abstimmung bei Dir selber"
+#: .\conf\global_settings.py:52
+msgid "Hungarian"
+msgstr "Ungarisch"
-#: contrib/comments/views/comments.py:27
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr ""
-"Die Abstimmung ist zwangsweise, weil Du an mindestens einer anderen "
-"Abstimmung teilnimmst."
+#: .\conf\global_settings.py:53
+msgid "Hebrew"
+msgstr "Hebräisch"
-#: 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] ""
-"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"
-"\n"
-"%(text)s"
+#: .\conf\global_settings.py:54
+msgid "Icelandic"
+msgstr "Isländisch"
-#: contrib/comments/views/comments.py:116
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Dieser Kommentar ist von einem nicht einschtzbaren Benutzer:\n"
-"\n"
-"%(text)s"
+#: .\conf\global_settings.py:55
+msgid "Italian"
+msgstr "Italienisch"
-#: contrib/comments/views/comments.py:188
-#: contrib/comments/views/comments.py:280
-msgid "Only POSTs are allowed"
-msgstr "Nur POST ist erlaubt"
+#: .\conf\global_settings.py:56
+msgid "Japanese"
+msgstr "Japanisch"
-#: 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 fehlt"
+#: .\conf\global_settings.py:57
+msgid "Dutch"
+msgstr "Holländisch"
-#: 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)"
+#: .\conf\global_settings.py:58
+msgid "Norwegian"
+msgstr "Norwegisch"
-#: 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 ungltig."
+#: .\conf\global_settings.py:59
+msgid "Polish"
+msgstr "Polnisch"
-#: 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"
+#: .\conf\global_settings.py:60
+msgid "Brazilian"
+msgstr "Brasilianisch"
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:17
-msgid "Username:"
-msgstr "Benutzername:"
+#: .\conf\global_settings.py:61
+msgid "Romanian"
+msgstr "Rumänisch"
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Log out"
-msgstr "Abmelden"
+#: .\conf\global_settings.py:62
+msgid "Russian"
+msgstr "Russisch"
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
-msgstr "Passwort:"
+#: .\conf\global_settings.py:63
+msgid "Slovak"
+msgstr "Slowakisch"
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Kennwort vergessen?"
+#: .\conf\global_settings.py:64
+msgid "Slovenian"
+msgstr "Slowenisch"
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Bewertungen"
+#: .\conf\global_settings.py:65
+msgid "Serbian"
+msgstr "Serbisch"
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Erforderlich"
+#: .\conf\global_settings.py:66
+msgid "Swedish"
+msgstr "Schwedisch"
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Optional"
+#: .\conf\global_settings.py:67
+msgid "Tamil"
+msgstr "Tamilisch"
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Ein Bild verffentlichen"
+#: .\conf\global_settings.py:68
+msgid "Turkish"
+msgstr "Türkisch"
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Kommentar:"
+#: .\conf\global_settings.py:69
+msgid "Ukrainian"
+msgstr "Ukrainisch"
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Kommentarvorschau"
+#: .\conf\global_settings.py:70
+msgid "Simplified Chinese"
+msgstr "Vereinfachtes Chinesisch"
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Ihr Name:"
+#: .\conf\global_settings.py:71
+msgid "Traditional Chinese"
+msgstr "Traditionelles Chinesisch"
-#: contrib/admin/filterspecs.py:40
+#: .\contrib\admin\filterspecs.py:40
#, python-format
msgid ""
"<h3>By %s:</h3>\n"
@@ -357,1911 +160,2066 @@ msgstr ""
"<h3>Nach %s:</h3>\n"
"<ul>\n"
-#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169
+#: .\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
+#: .\contrib\admin\filterspecs.py:143
+#: .\newforms\widgets.py:162
+#: .\oldforms\__init__.py:572
msgid "Yes"
msgstr "Ja"
-#: contrib/admin/filterspecs.py:143
+#: .\contrib\admin\filterspecs.py:143
+#: .\newforms\widgets.py:162
+#: .\oldforms\__init__.py:572
msgid "No"
msgstr "Nein"
-#: contrib/admin/filterspecs.py:150
+#: .\contrib\admin\filterspecs.py:150
+#: .\newforms\widgets.py:162
+#: .\oldforms\__init__.py:572
msgid "Unknown"
msgstr "Unbekannt"
-#: contrib/admin/models.py:16
+#: .\contrib\admin\models.py:16
msgid "action time"
-msgstr "Zeit der Aktion"
+msgstr "Zeitpunkt der Aktion"
-#: contrib/admin/models.py:19
+#: .\contrib\admin\models.py:19
msgid "object id"
-msgstr "Objekt 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"
+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 "Logeintrge"
+msgstr "Logeinträge"
-#: contrib/admin/templatetags/admin_list.py:230
-msgid "All dates"
-msgstr "Alle Tage"
+#: .\contrib\admin\templates\admin\404.html.py:4
+#: .\contrib\admin\templates\admin\404.html.py:8
+msgid "Page not found"
+msgstr "Seite nicht gefunden"
-#: 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 Kennwort eingeben. Beide Felder "
-"bercksichtigen die Gro-/Kleinschreibung."
+#: .\contrib\admin\templates\admin\404.html.py: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."
-#: contrib/admin/views/decorators.py:24
-#: contrib/admin/templates/admin/login.html:25
-msgid "Log in"
-msgstr "Anmelden"
+#: .\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
+msgid "Home"
+msgstr "Start"
-#: 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 "
-"Beitrge wurden gesichert."
+#: .\contrib\admin\templates\admin\500.html.py:4
+msgid "Server error"
+msgstr "Serverfehler"
-#: 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\templates\admin\500.html.py:6
+msgid "Server error (500)"
+msgstr "Serverfehler (500)"
-#: contrib/admin/views/decorators.py:83
-msgid "Usernames cannot contain the '@' character."
-msgstr "Benutzernamen knnen das Zeichen '@' nicht enthalten."
+#: .\contrib\admin\templates\admin\500.html.py:9
+msgid "Server Error <em>(500)</em>"
+msgstr "Serverfehler <em>(500)</em>"
-#: contrib/admin/views/decorators.py:85
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr ""
-"Die eMail-Adresse ist nicht der Benutzername. Bitte '%s' stattdessen "
-"versuchen."
+#: .\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/views/main.py:223
-msgid "Site administration"
-msgstr "Website Verwaltung"
+#: .\contrib\admin\templates\admin\base.html.py:25
+msgid "Welcome,"
+msgstr "Willkommen,"
-#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:18
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" wurde erfolgreich hinzugefgt."
+#: .\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
+msgid "Documentation"
+msgstr "Dokumentation"
-#: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347
-#: contrib/admin/views/auth.py:23
-msgid "You may edit it again below."
-msgstr "Das Element kann jetzt weiter gendert werden."
+#: .\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
+msgid "Change password"
+msgstr "Passwort ändern"
-#: 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\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
+msgid "Log out"
+msgstr "Abmelden"
-#: contrib/admin/views/main.py:289
-#, python-format
-msgid "Add %s"
-msgstr "%s zufgen"
+#: .\contrib\admin\templates\admin\base_site.html.py:4
+msgid "Django site admin"
+msgstr "Django Systemverwaltung"
-#: contrib/admin/views/main.py:335
-#, python-format
-msgid "Added %s."
-msgstr "%s hinzugefgt."
+#: .\contrib\admin\templates\admin\base_site.html.py:7
+msgid "Django administration"
+msgstr "Django Verwaltung"
-#: contrib/admin/views/main.py:335 contrib/admin/views/main.py:337
-#: contrib/admin/views/main.py:339 db/models/manipulators.py:306
-msgid "and"
-msgstr "und"
+#: .\contrib\admin\templates\admin\change_form.html.py:15
+#: .\contrib\admin\templates\admin\index.html.py:28
+msgid "Add"
+msgstr "Hinzufügen"
-#: contrib/admin/views/main.py:337
-#, python-format
-msgid "Changed %s."
-msgstr "%s gendert"
+#: .\contrib\admin\templates\admin\change_form.html.py:21
+#: .\contrib\admin\templates\admin\object_history.html.py:5
+msgid "History"
+msgstr "Geschichte"
-#: contrib/admin/views/main.py:339
-#, python-format
-msgid "Deleted %s."
-msgstr "%s gelscht."
+#: .\contrib\admin\templates\admin\change_form.html.py:22
+msgid "View on site"
+msgstr "Im Web Anzeigen"
-#: contrib/admin/views/main.py:342
-msgid "No fields changed."
-msgstr "Keine Felder gendert."
+#: .\contrib\admin\templates\admin\change_form.html.py:32
+#: .\contrib\admin\templates\admin\auth\user\change_password.html.py: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/views/main.py:345
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" wurde erfolgreich gendert."
+#: .\contrib\admin\templates\admin\change_form.html.py:50
+msgid "Ordering"
+msgstr "Sortierung"
-#: 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 zugefgt. Das Element kann jetzt "
-"gendert werden."
+#: .\contrib\admin\templates\admin\change_form.html.py:53
+msgid "Order:"
+msgstr "Reihenfolge:"
-#: contrib/admin/views/main.py:391
+#: .\contrib\admin\templates\admin\change_list.html.py:12
#, python-format
-msgid "Change %s"
-msgstr "%s ndern"
+msgid "Add %(name)s"
+msgstr "%(name)s hinzufügen"
-#: contrib/admin/views/main.py:473
-#, 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\templates\admin\delete_confirmation.html.py:9
+#: .\contrib\admin\templates\admin\submit_line.html.py:3
+msgid "Delete"
+msgstr "Löschen"
-#: contrib/admin/views/main.py:478
+#: .\contrib\admin\templates\admin\delete_confirmation.html.py:14
#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Ein oder mehrere %(fieldname)s in %(name)s:"
+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/views/main.py:511
+#: .\contrib\admin\templates\admin\delete_confirmation.html.py:21
#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" wurde erfolgreich gelscht."
+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/views/main.py:514
-msgid "Are you sure?"
-msgstr "Sicher? Ganz sicher?"
+#: .\contrib\admin\templates\admin\delete_confirmation.html.py:26
+msgid "Yes, I'm sure"
+msgstr "Ja, ich bin sicher"
-#: contrib/admin/views/main.py:536
+#: .\contrib\admin\templates\admin\filter.html.py:2
#, python-format
-msgid "Change history: %s"
-msgstr "nderungsgeschichte: %s"
+msgid " By %(filter_title)s "
+msgstr " Nach %(filter_title)s "
-#: contrib/admin/views/main.py:570
-#, python-format
-msgid "Select %s"
-msgstr "%s auswhlen"
+#: .\contrib\admin\templates\admin\filters.html.py:4
+msgid "Filter"
+msgstr "Filter"
-#: contrib/admin/views/main.py:570
+#: .\contrib\admin\templates\admin\index.html.py:17
#, python-format
-msgid "Select %s to change"
-msgstr "%s zur nderung auswhlen"
-
-#: contrib/admin/views/main.py:758
-msgid "Database error"
-msgstr "Datenbankfehler"
+msgid "Models available in the %(name)s application."
+msgstr "Modelle, die in der Anwendung %(name)s vorhanden sind."
-#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48
-#: contrib/admin/views/doc.py:50
-msgid "tag:"
-msgstr "Schlagwort:"
+#: .\contrib\admin\templates\admin\index.html.py:18
+#, python-format
+msgid "%(name)s"
+msgstr "%(name)s"
-#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79
-#: contrib/admin/views/doc.py:81
-msgid "filter:"
-msgstr "Filter:"
+#: .\contrib\admin\templates\admin\index.html.py:34
+msgid "Change"
+msgstr "Ändern"
-#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137
-#: contrib/admin/views/doc.py:139
-msgid "view:"
-msgstr "Ansicht:"
+#: .\contrib\admin\templates\admin\index.html.py:44
+msgid "You don't have permission to edit anything."
+msgstr "Sie haben keine Berechtigung irgendwas zu ändern."
-#: contrib/admin/views/doc.py:164
-#, python-format
-msgid "App %r not found"
-msgstr "Anwendung %r nicht gefunden"
+#: .\contrib\admin\templates\admin\index.html.py:52
+msgid "Recent Actions"
+msgstr "Kürzliche Aktionen"
-#: 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"
+#: .\contrib\admin\templates\admin\index.html.py:53
+msgid "My Actions"
+msgstr "Meine Aktionen"
-#: contrib/admin/views/doc.py:183
-#, python-format
-msgid "the related `%s.%s` object"
-msgstr "Das verknpfte `%s.%s` Objekt"
+#: .\contrib\admin\templates\admin\index.html.py:57
+msgid "None available"
+msgstr "Keine vorhanden"
-#: 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\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/views/doc.py:214
-#, python-format
-msgid "related `%s.%s` objects"
-msgstr "verknpftes `%s.%s` Objekt"
+#: .\contrib\admin\templates\admin\login.html.py:17
+#: .\contrib\comments\templates\comments\form.html.py:6
+#: .\contrib\comments\templates\comments\form.html.py:8
+msgid "Username:"
+msgstr "Benutzername:"
-#: contrib/admin/views/doc.py:219
-#, python-format
-msgid "all %s"
-msgstr "Alle %s"
+#: .\contrib\admin\templates\admin\login.html.py:20
+#: .\contrib\comments\templates\comments\form.html.py:8
+msgid "Password:"
+msgstr "Passwort:"
-#: contrib/admin/views/doc.py:224
-#, python-format
-msgid "number of %s"
-msgstr "Anzahl von %s"
+#: .\contrib\admin\templates\admin\login.html.py:25
+#: .\contrib\admin\views\decorators.py:24
+msgid "Log in"
+msgstr "Anmelden"
-#: contrib/admin/views/doc.py:229
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Felder am %s Objekt"
+#: .\contrib\admin\templates\admin\object_history.html.py:18
+msgid "Date/time"
+msgstr "Datum/Zeit"
-#: 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\templates\admin\object_history.html.py:19
+msgid "User"
+msgstr "Benutzer"
-#: contrib/admin/views/doc.py:292
-msgid "Boolean (Either True or False)"
-msgstr "Wahrheitswert (Wahr oder Falsch)"
+#: .\contrib\admin\templates\admin\object_history.html.py:20
+msgid "Action"
+msgstr "Aktion"
-#: 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\templates\admin\object_history.html.py:26
+msgid "DATE_WITH_TIME_FULL"
+msgstr "j. N Y, H:i"
-#: contrib/admin/views/doc.py:294
-msgid "Comma-separated integers"
-msgstr "Kommaseparierte Liste von Zahlen"
+#: .\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/views/doc.py:295
-msgid "Date (without time)"
-msgstr "Datum (ohne Zeit)"
+#: .\contrib\admin\templates\admin\pagination.html.py:10
+msgid "Show all"
+msgstr "Zeige alle"
-#: contrib/admin/views/doc.py:296
-msgid "Date (with time)"
-msgstr "Datum (mit Zeit)"
+#: .\contrib\admin\templates\admin\search_form.html.py:8
+msgid "Go"
+msgstr "Los"
-#: contrib/admin/views/doc.py:297
-msgid "E-mail address"
-msgstr "E-mail-Adresse"
+#: .\contrib\admin\templates\admin\search_form.html.py:10
+#, python-format
+msgid "1 result"
+msgid_plural "%(counter)s results"
+msgstr[0] "Ein Ergebnis"
+msgstr[1] "%(counter)s Ergebnisse"
-#: 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\templates\admin\search_form.html.py:10
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr "%(full_result_count)s gesamt"
-#: contrib/admin/views/doc.py:300
-msgid "Decimal number"
-msgstr "Dezimalzahl"
+#: .\contrib\admin\templates\admin\submit_line.html.py:4
+msgid "Save as new"
+msgstr "Als neu sichern"
-#: contrib/admin/views/doc.py:306
-msgid "Boolean (Either True, False or None)"
-msgstr "Wahrheitswert (Wahr, Falsch oder Nichts)"
+#: .\contrib\admin\templates\admin\submit_line.html.py:5
+msgid "Save and add another"
+msgstr "Sichern und neu hinzufügen"
-#: contrib/admin/views/doc.py:307
-msgid "Relation to parent model"
-msgstr "Beziehung zum bermodell"
+#: .\contrib\admin\templates\admin\submit_line.html.py:6
+msgid "Save and continue editing"
+msgstr "Sichern und weiter bearbeiten"
-#: contrib/admin/views/doc.py:308
-msgid "Phone number"
-msgstr "Telefonnummer"
+#: .\contrib\admin\templates\admin\submit_line.html.py:7
+msgid "Save"
+msgstr "Sichern"
-#: contrib/admin/views/doc.py:313
-msgid "Text"
-msgstr "Text"
+#: .\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/views/doc.py:314
-msgid "Time"
-msgstr "Zeit"
+#: .\contrib\admin\templates\admin\auth\user\add_form.html.py:12
+msgid "Username"
+msgstr "Benutzername"
-#: contrib/admin/views/doc.py:315 contrib/flatpages/models.py:7
-msgid "URL"
-msgstr "URL"
+#: .\contrib\admin\templates\admin\auth\user\add_form.html.py:18
+#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:34
+msgid "Password"
+msgstr "Passwort"
-#: contrib/admin/views/doc.py:316
-msgid "U.S. state (two uppercase letters)"
-msgstr "U.S. Bundesstaat (zwei Grossbuchstaben)"
+#: .\contrib\admin\templates\admin\auth\user\add_form.html.py:23
+#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:39
+msgid "Password (again)"
+msgstr "Passwort (wiederholen)"
-#: contrib/admin/views/doc.py:317
-msgid "XML text"
-msgstr "XML Text"
+#: .\contrib\admin\templates\admin\auth\user\add_form.html.py:24
+#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:40
+msgid "Enter the same password as above, for verification."
+msgstr "Bitte das gleiche Passwort zur Überprüfung nochmal eingeben."
-#: contrib/admin/views/doc.py:343
+#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:28
#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s ist scheinbar kein urlpattern Objekt"
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr "Bitte geben Sie ein neues Passwort für den Benutzer <strong>%(username)s</strong> ein."
-#: contrib/admin/views/auth.py:29
-msgid "Add user"
-msgstr "Benutzer zufgen"
-
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Dokumentation"
+#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:3
+msgid "Bookmarklets"
+msgstr "Bookmarklets"
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Change password"
-msgstr "Passwort ndern"
+#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:5
+msgid "Documentation bookmarklets"
+msgstr "Dokumentations-Bookmarklets"
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/change_list.html:6
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/change_form.html:13
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "Start"
+#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:9
+msgid ""
+"\n"
+"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
+"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
+"select the bookmarklet from any page in the site. Note that some of these\n"
+"bookmarklets require you to be viewing the site from a computer designated\n"
+"as \"internal\" (talk to your system administrator if you aren't sure if\n"
+"your computer is \"internal\").</p>\n"
+msgstr ""
+"\n"
+"<p class=\"help\">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.</p>\n"
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_form.html:20
-msgid "History"
-msgstr "Geschichte"
+#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:19
+msgid "Documentation for this page"
+msgstr "Dokumentation für diese Seite"
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Date/time"
-msgstr "Datum/Zeit"
+#: .\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/object_history.html:19
-msgid "User"
-msgstr "Benutzer"
+#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:22
+msgid "Show object ID"
+msgstr "Objekt-ID anzeigen"
-#: contrib/admin/templates/admin/object_history.html:20
-msgid "Action"
-msgstr "Aktion"
+#: .\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/object_history.html:26
-msgid "DATE_WITH_TIME_FULL"
-msgstr "j. N Y, H:i"
+#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:25
+msgid "Edit this object (current window)"
+msgstr "Dieses Objekt im aktuellen Fenster ändern."
-#: 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 mglicherweise nicht "
-"ber diese Verwaltungsseiten angelegt."
+#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py: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."
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django Systemverwaltung"
+#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:28
+msgid "Edit this object (new window)"
+msgstr "Dieses Objekt in einem neuen Fenster ändern."
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django Verwaltung"
+#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:29
+msgid "As above, but opens the admin page in a new window."
+msgstr "Wie zuvor, aber öffnet die Administrationsseite in einem neuen Fenster."
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Serverfehler"
+#: .\contrib\admin\templates\registration\logged_out.html.py: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/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Serverfehler (500)"
+#: .\contrib\admin\templates\registration\logged_out.html.py:10
+msgid "Log in again"
+msgstr "Erneut anmelden"
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Serverfehler <em>(500)</em>"
+#: .\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
+msgid "Password change"
+msgstr "Passwort ändern"
-#: 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 ""
-"Es hat einen Fehler gegeben. Dieser Fehler wurde an die Serververwalter per "
-"eMail weitergegeben und sollte bald behoben sein. Vielen Dank fr Ihr "
-"Verstndnis."
+#: .\contrib\admin\templates\registration\password_change_done.html.py:6
+#: .\contrib\admin\templates\registration\password_change_done.html.py:10
+msgid "Password change successful"
+msgstr "Passwort erfolgreich geändert"
-#: 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\registration\password_change_done.html.py:12
+msgid "Your password was changed."
+msgstr "Ihr Passwort wurde geändert."
-#: 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 kann nicht gefunden werden."
+#: .\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/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\registration\password_change_form.html.py:17
+msgid "Old password:"
+msgstr "Altes Passwort:"
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
+#: .\contrib\admin\templates\registration\password_change_form.html.py:19
+msgid "New password:"
+msgstr "Neues Passwort:"
-#: contrib/admin/templates/admin/index.html:28
-#: contrib/admin/templates/admin/change_form.html:15
-msgid "Add"
-msgstr "Zufgen"
+#: .\contrib\admin\templates\registration\password_change_form.html.py:21
+msgid "Confirm password:"
+msgstr "Passwort wiederholen:"
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "ndern"
+#: .\contrib\admin\templates\registration\password_change_form.html.py:23
+msgid "Change my password"
+msgstr "Mein Passwort ändern"
-#: 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\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
+msgid "Password reset"
+msgstr "Passwort zurücksetzen"
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "Krzliche Aktionen"
+#: .\contrib\admin\templates\registration\password_reset_done.html.py:6
+#: .\contrib\admin\templates\registration\password_reset_done.html.py:10
+msgid "Password reset successful"
+msgstr "Passwort wurde erfolgreich zurückgesetzt"
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "Meine Aktionen"
+#: .\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/admin/index.html:57
-msgid "None available"
-msgstr "Keine vorhanden"
+#: .\contrib\admin\templates\registration\password_reset_email.html.py: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/admin/change_list.html:11
+#: .\contrib\admin\templates\registration\password_reset_email.html.py:3
#, python-format
-msgid "Add %(name)s"
-msgstr "%(name)s zufgen"
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "Willkommen,"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "Lschen"
+msgid "for your user account at %(site_name)s"
+msgstr "für Ihren Benutzer bei %(site_name)s angefordert haben."
-#: contrib/admin/templates/admin/delete_confirmation.html:14
+#: .\contrib\admin\templates\registration\password_reset_email.html.py:5
#, 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 Lschung des %(object_name)s '%(escaped_object)s' htte die Lschung von "
-"abhngigen Daten zur Folge, aber Sie haben nicht die ntigen Rechte um die "
-"folgenden abhngigen Daten zu lschen:"
+msgid "Your new password is: %(new_password)s"
+msgstr "Ihr neues Passwort lautet: %(new_password)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 ""
-"Sind Sie sicher, dass Sie %(object_name)s \"%(escaped_object)s\" lschen "
-"wollen? Es werden zustzlich die folgenden abhngigen Daten mit gelscht:"
+#: .\contrib\admin\templates\registration\password_reset_email.html.py: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/admin/delete_confirmation.html:26
-msgid "Yes, I'm sure"
-msgstr "Ja, ich bin sicher"
+#: .\contrib\admin\templates\registration\password_reset_email.html.py: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
+msgid "Thanks for using our site!"
+msgstr "Vielen Dank, dass Sie unsere Seiten benutzen!"
-#: contrib/admin/templates/admin/filter.html:2
+#: .\contrib\admin\templates\registration\password_reset_email.html.py:15
#, python-format
-msgid " By %(filter_title)s "
-msgstr " Nach %(filter_title)s "
+msgid "The %(site_name)s team"
+msgstr "Das Team von %(site_name)s"
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Los"
+#: .\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/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] ""
-msgstr[1] ""
+#: .\contrib\admin\templates\registration\password_reset_form.html.py:16
+msgid "E-mail address:"
+msgstr "E-Mail-Adresse:"
-#: 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\registration\password_reset_form.html.py:16
+msgid "Reset my password"
+msgstr "Mein Passwort zurücksetzen"
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Zeige alle"
+#: .\contrib\admin\templates\widget\date_time.html.py:3
+msgid "Date:"
+msgstr "Datum:"
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "Filter"
+#: .\contrib\admin\templates\widget\date_time.html.py:4
+msgid "Time:"
+msgstr "Zeit:"
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "View on site"
-msgstr "Im Web Anzeigen"
+#: .\contrib\admin\templates\widget\file.html.py:2
+msgid "Currently:"
+msgstr "Derzeit:"
-#: contrib/admin/templates/admin/change_form.html:30
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Bitte den Fehler korrigieren."
-msgstr[1] "Bitte die Fehler korrigieren."
+#: .\contrib\admin\templates\widget\file.html.py:3
+msgid "Change:"
+msgstr "Ändern:"
-#: contrib/admin/templates/admin/change_form.html:48
-msgid "Ordering"
-msgstr "Sortierung"
+#: .\contrib\admin\templatetags\admin_list.py:238
+msgid "All dates"
+msgstr "Alle Tage"
-#: contrib/admin/templates/admin/change_form.html:51
-msgid "Order:"
-msgstr "Reihenfolge:"
+#: .\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/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Als Neu sichern"
+#: .\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/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Sichern und neu hinzufgen"
+#: .\contrib\admin\views\auth.py:30
+msgid "Add user"
+msgstr "Benutzer hinzufügen"
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Sichern und weiter bearbeiten"
+#: .\contrib\admin\views\auth.py:57
+msgid "Password changed successfully."
+msgstr "Passwort erfolgreich geändert."
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Sichern"
+#: .\contrib\admin\views\auth.py:64
+#, python-format
+msgid "Change password: %s"
+msgstr "Passwort ändern: %s"
-#: 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 ""
-"Irgendetwas ist falsch 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\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/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 knnen weitere "
-"Optionen fr den Benutzer gendert werden."
+#: .\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/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "Benutzername"
+#: .\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/templates/admin/auth/user/add_form.html:18
-msgid "Password"
-msgstr "Passwort"
+#: .\contrib\admin\views\decorators.py:83
+msgid "Usernames cannot contain the '@' character."
+msgstr "Benutzernamen dürfen das Zeichen '@' nicht enthalten."
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-msgid "Password (again)"
-msgstr "Kennwort (wiederholen)"
+#: .\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."
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-msgid "Enter the same password as above, for verification."
-msgstr "Bitte das gleiche Passwort zur Prfung nochmal eingeben."
+#: .\contrib\admin\views\doc.py:46
+#: .\contrib\admin\views\doc.py:48
+#: .\contrib\admin\views\doc.py:50
+msgid "tag:"
+msgstr "Schlagwort:"
-#: 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 "Kennwort ndern"
+#: .\contrib\admin\views\doc.py:77
+#: .\contrib\admin\views\doc.py:79
+#: .\contrib\admin\views\doc.py:81
+msgid "filter:"
+msgstr "Filter:"
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Kennwortnderung erfolgreich"
+#: .\contrib\admin\views\doc.py:135
+#: .\contrib\admin\views\doc.py:137
+#: .\contrib\admin\views\doc.py:139
+msgid "view:"
+msgstr "Ansicht:"
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Ihr Kennwort wurde gendert."
+#: .\contrib\admin\views\doc.py:164
+#, python-format
+msgid "App %r not found"
+msgstr "Anwendung %r nicht gefunden"
-#: 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 "Kennwort zurcksetzen"
+#: .\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"
-#: 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 auf ein neues und senden das per E-Mail zu."
+#: .\contrib\admin\views\doc.py:183
+#, python-format
+msgid "the related `%s.%s` object"
+msgstr "Das verknüpfte `%s.%s` Objekt"
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "E-Mail-Adresse:"
+#: .\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/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Mein Kennwort zurcksetzen"
+#: .\contrib\admin\views\doc.py:214
+#, python-format
+msgid "related `%s.%s` objects"
+msgstr "verknüpftes `%s.%s` Objekt"
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Vielen Dank, da Sie hier ein paar nette Minuten verbracht haben."
+#: .\contrib\admin\views\doc.py:219
+#, python-format
+msgid "all %s"
+msgstr "Alle %s"
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Erneut Anmelden"
+#: .\contrib\admin\views\doc.py:224
+#, python-format
+msgid "number of %s"
+msgstr "Anzahl von %s"
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Erfolgreich Kennwort zurckgesetzt"
+#: .\contrib\admin\views\doc.py:229
+#, python-format
+msgid "Fields on %s objects"
+msgstr "Felder am %s Objekt"
-#: 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 Ihnen ein neues Kennwort per eMail zugeschickt an die Adresse, die "
-"Sie uns gegeben haben. Es sollte in Krze ankommen."
+#: .\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/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 Sicherheitsgrnden erst Ihr altes Kennwort und darunter "
-"dann zweimal (um sicherzustellen, dass Sie es korrekt eingegeben haben) das "
-"neue Kennwort ein."
+#: .\contrib\admin\views\doc.py:292
+msgid "Boolean (Either True or False)"
+msgstr "Boolscher Wert (True oder False)"
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "altes Kennwort:"
+#: .\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/templates/registration/password_change_form.html:19
-msgid "New password:"
-msgstr "neues Kennwort:"
+#: .\contrib\admin\views\doc.py:294
+msgid "Comma-separated integers"
+msgstr "Kommaseparierte Liste von Ganzzahlen"
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
-msgstr "Kennwortwiederholung:"
+#: .\contrib\admin\views\doc.py:295
+msgid "Date (without time)"
+msgstr "Datum (ohne Uhrzeit)"
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
-msgstr "Mein Kennwort ndern"
+#: .\contrib\admin\views\doc.py:296
+msgid "Date (with time)"
+msgstr "Datum (mit Uhrzeit)"
-#: 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 Mail, weil Sie ein neues Kennwort"
+#: .\contrib\admin\views\doc.py:297
+msgid "E-mail address"
+msgstr "E-Mail-Adresse"
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "fr Ihren Benutzer bei %(site_name)s angefordert haben."
+#: .\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/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "Ihr neues Kennwort ist: %(new_password)s"
+#: .\contrib\admin\views\doc.py:300
+msgid "Decimal number"
+msgstr "Dezimalzahl"
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "Sie knnen das Kennwort auf folgender Seite ndern:"
+#: .\contrib\admin\views\doc.py:304
+#: .\contrib\comments\models.py:85
+msgid "IP address"
+msgstr "IP-Adresse"
-#: 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\views\doc.py:306
+msgid "Boolean (Either True, False or None)"
+msgstr "Boolscher Wert (True, False oder None)"
-#: 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\views\doc.py:307
+msgid "Relation to parent model"
+msgstr "Beziehung zum Eltern-Modell"
-#: 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\views\doc.py:308
+msgid "Phone number"
+msgstr "Telefonnummer"
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Bookmarklets"
+#: .\contrib\admin\views\doc.py:313
+msgid "Text"
+msgstr "Text"
-#: contrib/admin/templates/admin_doc/bookmarklets.html:5
-msgid "Documentation bookmarklets"
-msgstr "Dokumentations-Bookmarklets"
+#: .\contrib\admin\views\doc.py:314
+msgid "Time"
+msgstr "Zeit"
-#: contrib/admin/templates/admin_doc/bookmarklets.html:9
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Um Bookmarklets zu installieren mssen diese Links in die\n"
-"Browser-Werkzeugleiste gehzogen werden, oder mittels rechter Maustaste in "
-"die\n"
-"Bookmarks gespeichert werden. Danach knnen die Bookmarklets von jeder "
-"Seite\n"
-"aufgerufen werden. Einige Bookmarklets sind fr den Zugriff von 'internen'\n"
-"Rechnern eingeschrnkt. Falls nicht klar ist, ob ein Rechner als 'intern'\n"
-"bewertet wird, bitte den Administrator fragen.</p>\n"
+#: .\contrib\admin\views\doc.py:315
+#: .\contrib\flatpages\models.py:7
+msgid "URL"
+msgstr "Adresse (URL)"
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Documentation for this page"
-msgstr "Dokumentation fr diese Seite"
+#: .\contrib\admin\views\doc.py:316
+msgid "U.S. state (two uppercase letters)"
+msgstr "U.S. Bundesstaat (zwei Großbuchstaben)"
-#: 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 fr den View der diese Seite "
-"erzeugt."
+#: .\contrib\admin\views\doc.py:317
+msgid "XML text"
+msgstr "XML-Text"
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Show object ID"
-msgstr "Objekt ID anzeigen"
+#: .\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/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 fr Seiten die ein einzelnes "
-"Objekt reprsentieren."
+#: .\contrib\admin\views\main.py:223
+msgid "Site administration"
+msgstr "Website Verwaltung"
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Edit this object (current window)"
-msgstr "Dieses Objekt im aktuellen Fenster ndern."
+#: .\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/templates/admin_doc/bookmarklets.html:26
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Springt zu der Administrationsseite fr dieses Objekt, wenn diese Seite ein "
-"Objekt reprsentiert."
+#: .\contrib\admin\views\main.py:289
+#, python-format
+msgid "Add %s"
+msgstr "%s hinzufügen"
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "Edit this object (new window)"
-msgstr "Dieses Objekt in einem neuen Fenster ndern."
+#: .\contrib\admin\views\main.py:335
+#, python-format
+msgid "Added %s."
+msgstr "%s hinzugefügt."
-#: contrib/admin/templates/admin_doc/bookmarklets.html:29
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-"Wie zuvor, aber ffnent die Administrationsseite in einem neuen Fenster."
+#: .\contrib\admin\views\main.py:335
+#: .\contrib\admin\views\main.py:337
+#: .\contrib\admin\views\main.py:339
+#: .\db\models\manipulators.py:306
+msgid "and"
+msgstr "und"
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Datum:"
+#: .\contrib\admin\views\main.py:337
+#, python-format
+msgid "Changed %s."
+msgstr "%s geändert"
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Zeit:"
+#: .\contrib\admin\views\main.py:339
+#, python-format
+msgid "Deleted %s."
+msgstr "%s gelöscht."
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Derzeit:"
+#: .\contrib\admin\views\main.py:342
+msgid "No fields changed."
+msgstr "Keine Felder geändert."
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "ndern:"
+#: .\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/redirects/models.py:7
-msgid "redirect from"
-msgstr "Umleitung von"
+#: .\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."
-#: 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\admin\views\main.py:391
+#, python-format
+msgid "Change %s"
+msgstr "%s ändern"
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "Umleitung zu"
+#: .\contrib\admin\views\main.py:473
+#, 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/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\admin\views\main.py:478
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s:"
+msgstr "Ein oder mehrere %(fieldname)s in %(name)s:"
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "Umleitung"
+#: .\contrib\admin\views\main.py:511
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr "%(name)s \"%(obj)s\" wurde erfolgreich gelöscht."
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "Umleitungen"
+#: .\contrib\admin\views\main.py:514
+msgid "Are you sure?"
+msgstr "Sind Sie ganz sicher?"
-#: 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\admin\views\main.py:536
+#, python-format
+msgid "Change history: %s"
+msgstr "Änderungsgeschichte: %s"
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "Titel"
+#: .\contrib\admin\views\main.py:570
+#, python-format
+msgid "Select %s"
+msgstr "%s auswählen"
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "Inhalt"
+#: .\contrib\admin\views\main.py:570
+#, python-format
+msgid "Select %s to change"
+msgstr "%s zur Änderung auswählen"
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "Kommentare aktivieren"
+#: .\contrib\admin\views\main.py:758
+msgid "Database error"
+msgstr "Datenbankfehler"
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "Name der Vorlage"
+#: .\contrib\auth\forms.py:16
+#: .\contrib\auth\forms.py:137
+msgid "The two password fields didn't match."
+msgstr "Die beiden Passwörter sind nicht identisch."
-#: 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 gefllt ist, "
-"wird 'flatpages/default.html' als Standard gewhlt."
+#: .\contrib\auth\forms.py:24
+msgid "A user with that username already exists."
+msgstr "Ein Benutzer mit diesem Namen existiert bereits."
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "Registrierung erforderlich"
+#: .\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/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 ist, knnen nur angemeldete Benutzer diese Seite sehen."
+#: .\contrib\auth\forms.py:61
+msgid "This account is inactive."
+msgstr "Dieser Benutzer ist inaktiv."
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "Webseite"
+#: .\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/flatpages/models.py:19
-msgid "flat pages"
-msgstr "Webseiten"
+#: .\contrib\auth\forms.py:116
+msgid "The two 'new password' fields didn't match."
+msgstr "Die beiden neuen Passwörter sind nicht identisch."
-#: contrib/auth/views.py:39
-msgid "Logged out"
-msgstr "Abgemeldet"
+#: .\contrib\auth\forms.py:123
+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:57
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:42
msgid "permission"
msgstr "Berechtigung"
-#: contrib/auth/models.py:43 contrib/auth/models.py:58
+#: .\contrib\auth\models.py:43
+#: .\contrib\auth\models.py:58
msgid "permissions"
msgstr "Berechtigungen"
-#: contrib/auth/models.py:60
+#: .\contrib\auth\models.py:60
msgid "group"
msgstr "Gruppe"
-#: contrib/auth/models.py:61 contrib/auth/models.py:100
+#: .\contrib\auth\models.py:61
+#: .\contrib\auth\models.py:100
msgid "groups"
msgstr "Gruppen"
-#: contrib/auth/models.py:90
+#: .\contrib\auth\models.py:90
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: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:91
+#: .\contrib\auth\models.py:91
msgid "first name"
msgstr "Vorname"
-#: contrib/auth/models.py:92
+#: .\contrib\auth\models.py:92
msgid "last name"
msgstr "Nachname"
-#: contrib/auth/models.py:93
+#: .\contrib\auth\models.py:93
msgid "e-mail address"
-msgstr "eMail-Adresse"
+msgstr "E-Mail-Adresse"
-#: contrib/auth/models.py:94
+#: .\contrib\auth\models.py:94
msgid "password"
-msgstr "Kennwort"
+msgstr "Passwort"
-#: contrib/auth/models.py:94
-msgid "Use '[algo]$[salt]$[hexdigest]'"
-msgstr "Im Format '[algo]$[salt]$[hexdigest]'"
+#: .\contrib\auth\models.py:94
+msgid "Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change password form</a>."
+msgstr "Die Form '[algo]$[salt]$[hexdigest]' verwenden, oder das <a href=\"password/\">Passwort ändern Formular</a> benutzen."
-#: contrib/auth/models.py:95
+#: .\contrib\auth\models.py:95
msgid "staff status"
msgstr "Administrator"
-#: contrib/auth/models.py:95
+#: .\contrib\auth\models.py:95
msgid "Designates whether the user can log into this admin site."
-msgstr ""
-"Gibt an, ob der Benutzer sich 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:96
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 ""
-"Gibt an, ob der Benutzer sich an der Administrationsseite anmelden kann. "
-"Anstelle Benutzer zu lschen, kann das hier auch einfach abgeschaltet werden."
+#: .\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:97
+#: .\contrib\auth\models.py:97
msgid "superuser status"
msgstr "Hauptadmin."
-#: contrib/auth/models.py:97
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Bestimmt, dass dieser Benutzer alle Berechtigungen hat, ohne diese einzeln "
-"zuweisen zu mssen."
+#: .\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:98
+#: .\contrib\auth\models.py:98
msgid "last login"
-msgstr "letzte Anmeldung"
+msgstr "Letzte Anmeldung"
-#: contrib/auth/models.py:99
+#: .\contrib\auth\models.py:99
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 ""
-"Zustzlich zu den manuell angelegten Rechten erhlt dieser Benutzer auch "
-"alle Rechte, die seine zugewiesenen Gruppen haben."
+#: .\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:102
+#: .\contrib\auth\models.py:102
msgid "user permissions"
msgstr "Berechtigungen"
-#: contrib/auth/models.py:105
+#: .\contrib\auth\models.py:105
msgid "user"
msgstr "Benutzer"
-#: contrib/auth/models.py:106
+#: .\contrib\auth\models.py:106
msgid "users"
msgstr "Benutzer"
-#: contrib/auth/models.py:111
+#: .\contrib\auth\models.py:111
msgid "Personal info"
-msgstr "Persnliche Infos"
+msgstr "Persönliche Infos"
-#: contrib/auth/models.py:112
+#: .\contrib\auth\models.py:112
msgid "Permissions"
msgstr "Berechtigungen"
-#: contrib/auth/models.py:113
+#: .\contrib\auth\models.py:113
msgid "Important dates"
msgstr "Wichtige Daten"
-#: contrib/auth/models.py:114
+#: .\contrib\auth\models.py:114
msgid "Groups"
msgstr "Gruppen"
-#: contrib/auth/models.py:258
+#: .\contrib\auth\models.py:258
msgid "message"
msgstr "Mitteilung"
-#: contrib/auth/forms.py:16
-msgid "The two password fields didn't match."
-msgstr "Die zwei Passwrter sind nicht gleich."
-
-#: contrib/auth/forms.py:24
-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 fr "
-"die Anmeldung zwingend notwendig."
-
-#: contrib/auth/forms.py:61
-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 ""
-"Die Email-Adresse hat keinen Benutzer zugeordnet. Sicher, dass die Adresse "
-"hier angemeldet ist?"
-
-#: contrib/auth/forms.py:116
-msgid "The two 'new password' fields didn't match."
-msgstr "Die zwei Passwrter sind nicht gleich."
-
-#: contrib/auth/forms.py:123
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Das alte Passwort war falsch. Bitte neu eingeben."
-
-#: contrib/contenttypes/models.py:20
-msgid "python model class name"
-msgstr "Python Model-Klassenname"
-
-#: contrib/contenttypes/models.py:23
-msgid "content type"
-msgstr "Inhaltstyp"
-
-#: contrib/contenttypes/models.py:24
-msgid "content types"
-msgstr "Inhaltstypen"
-
-#: contrib/sessions/models.py:51
-msgid "session key"
-msgstr "Sitzungs-ID"
-
-#: contrib/sessions/models.py:52
-msgid "session data"
-msgstr "Sitzungsdaten"
-
-#: contrib/sessions/models.py:53
-msgid "expire date"
-msgstr "Verfallsdatum"
-
-#: contrib/sessions/models.py:57
-msgid "session"
-msgstr "Sitzung"
-
-#: contrib/sessions/models.py:58
-msgid "sessions"
-msgstr "Sitzungen"
-
-#: contrib/sites/models.py:10
-msgid "domain name"
-msgstr "Domainname"
+#: .\contrib\auth\views.py:39
+msgid "Logged out"
+msgstr "Abgemeldet"
-#: contrib/sites/models.py:11
-msgid "display name"
-msgstr "Anzeigename"
+#: .\contrib\comments\models.py:67
+#: .\contrib\comments\models.py:166
+msgid "object ID"
+msgstr "Objekt-ID"
-#: contrib/sites/models.py:15
-msgid "site"
-msgstr "Website"
+#: .\contrib\comments\models.py:68
+msgid "headline"
+msgstr "Überschrift"
-#: contrib/sites/models.py:16
-msgid "sites"
-msgstr "Websites"
+#: .\contrib\comments\models.py:69
+#: .\contrib\comments\models.py:90
+#: .\contrib\comments\models.py:167
+msgid "comment"
+msgstr "Kommentar"
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Montag"
+#: .\contrib\comments\models.py:70
+msgid "rating #1"
+msgstr "Bewertung #1"
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Dienstag"
+#: .\contrib\comments\models.py:71
+msgid "rating #2"
+msgstr "Bewertung #2"
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Mittwoch"
+#: .\contrib\comments\models.py:72
+msgid "rating #3"
+msgstr "Bewertung #3"
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Donnerstag"
+#: .\contrib\comments\models.py:73
+msgid "rating #4"
+msgstr "Bewertung #4"
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Freitag"
+#: .\contrib\comments\models.py:74
+msgid "rating #5"
+msgstr "Bewertung #5"
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Samstag"
+#: .\contrib\comments\models.py:75
+msgid "rating #6"
+msgstr "Bewertung #6"
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Sonntag"
+#: .\contrib\comments\models.py:76
+msgid "rating #7"
+msgstr "Bewertung #7"
-#: utils/dates.py:14
-msgid "January"
-msgstr "Januar"
+#: .\contrib\comments\models.py:77
+msgid "rating #8"
+msgstr "Bewertung #8"
-#: utils/dates.py:14
-msgid "February"
-msgstr "Februar"
+#: .\contrib\comments\models.py:82
+msgid "is valid rating"
+msgstr "ist eine Bewertung"
-#: utils/dates.py:14 utils/dates.py:27
-msgid "March"
-msgstr "Mrz"
+#: .\contrib\comments\models.py:83
+#: .\contrib\comments\models.py:169
+msgid "date/time submitted"
+msgstr "Datum/Zeit Erstellung"
-#: utils/dates.py:14 utils/dates.py:27
-msgid "April"
-msgstr "April"
+#: .\contrib\comments\models.py:84
+#: .\contrib\comments\models.py:170
+msgid "is public"
+msgstr "ist öffentlich"
-#: utils/dates.py:14 utils/dates.py:27
-msgid "May"
-msgstr "Mai"
+#: .\contrib\comments\models.py:86
+msgid "is removed"
+msgstr "ist gelöscht"
-#: utils/dates.py:14 utils/dates.py:27
-msgid "June"
-msgstr "Juni"
+#: .\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."
-#: utils/dates.py:15 utils/dates.py:27
-msgid "July"
-msgstr "Juli"
+#: .\contrib\comments\models.py:91
+msgid "comments"
+msgstr "Kommentare"
-#: utils/dates.py:15
-msgid "August"
-msgstr "August"
+#: .\contrib\comments\models.py:131
+#: .\contrib\comments\models.py:207
+msgid "Content object"
+msgstr "Inhaltsobjekt"
-#: utils/dates.py:15
-msgid "September"
-msgstr "September"
+#: .\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 ""
+"Geschrieben von %(user)s am %(date)s\n"
+"\n"
+"%(comment)s\n"
+"\n"
+"http://%(domain)s%(url)s"
-#: utils/dates.py:15
-msgid "October"
-msgstr "Oktober"
+#: .\contrib\comments\models.py:168
+msgid "person's name"
+msgstr "Autorname"
-#: utils/dates.py:15
-msgid "November"
-msgstr "November"
+#: .\contrib\comments\models.py:171
+msgid "ip address"
+msgstr "IP-Adresse"
-#: utils/dates.py:16
-msgid "December"
-msgstr "Dezember"
+#: .\contrib\comments\models.py:173
+msgid "approved by staff"
+msgstr "Bestätigt vom Betreiber"
-#: utils/dates.py:19
-msgid "jan"
-msgstr "Jan"
+#: .\contrib\comments\models.py:176
+msgid "free comment"
+msgstr "Freier Kommentar"
-#: utils/dates.py:19
-msgid "feb"
-msgstr "Feb"
+#: .\contrib\comments\models.py:177
+msgid "free comments"
+msgstr "Freie Kommentare"
-#: utils/dates.py:19
-msgid "mar"
-msgstr "Mr"
+#: .\contrib\comments\models.py:233
+msgid "score"
+msgstr "Bewertung"
-#: utils/dates.py:19
-msgid "apr"
-msgstr "Apr"
+#: .\contrib\comments\models.py:234
+msgid "score date"
+msgstr "Bewertungsdatum"
-#: utils/dates.py:19
-msgid "may"
-msgstr "Mai"
+#: .\contrib\comments\models.py:237
+msgid "karma score"
+msgstr "Karma Bewertung"
-#: utils/dates.py:19
-msgid "jun"
-msgstr "Jun"
+#: .\contrib\comments\models.py:238
+msgid "karma scores"
+msgstr "Karma Bewertungen"
-#: utils/dates.py:20
-msgid "jul"
-msgstr "Jul"
+#: .\contrib\comments\models.py:242
+#, python-format
+msgid "%(score)d rating by %(user)s"
+msgstr "%(score)d Bewertung von %(user)s"
-#: utils/dates.py:20
-msgid "aug"
-msgstr "Aug"
+#: .\contrib\comments\models.py:258
+#, python-format
+msgid ""
+"This comment was flagged by %(user)s:\n"
+"\n"
+"%(text)s"
+msgstr ""
+"Dieser Kommentar ist von %(user)s markiert:\n"
+"\n"
+"%(text)s"
-#: utils/dates.py:20
-msgid "sep"
-msgstr "Sep"
+#: .\contrib\comments\models.py:265
+msgid "flag date"
+msgstr "Kennzeichnungsdatum"
-#: utils/dates.py:20
-msgid "oct"
-msgstr "Okt"
+#: .\contrib\comments\models.py:268
+msgid "user flag"
+msgstr "Benutzerkennzeichnung"
-#: utils/dates.py:20
-msgid "nov"
-msgstr "Nov"
+#: .\contrib\comments\models.py:269
+msgid "user flags"
+msgstr "Benutzerkennzeichnungen"
-#: utils/dates.py:20
-msgid "dec"
-msgstr "Dez"
+#: .\contrib\comments\models.py:273
+#, python-format
+msgid "Flag by %r"
+msgstr "Gekennzeichnet von %r"
-#: utils/dates.py:27
-msgid "Jan."
-msgstr "Jan."
+#: .\contrib\comments\models.py:278
+msgid "deletion date"
+msgstr "Löschdatum"
-#: utils/dates.py:27
-msgid "Feb."
-msgstr "Feb."
+#: .\contrib\comments\models.py:280
+msgid "moderator deletion"
+msgstr "Löschung vom Moderator"
-#: utils/dates.py:28
-msgid "Aug."
-msgstr "Aug."
+#: .\contrib\comments\models.py:281
+msgid "moderator deletions"
+msgstr "Löschungen vom Moderator"
-#: utils/dates.py:28
-msgid "Sept."
-msgstr "Sept."
+#: .\contrib\comments\models.py:285
+#, python-format
+msgid "Moderator deletion by %r"
+msgstr "Vom Moderator %r gelöscht"
-#: utils/dates.py:28
-msgid "Oct."
-msgstr "Okt."
+#: .\contrib\comments\templates\comments\form.html.py:8
+msgid "Forgotten your password?"
+msgstr "Passwort vergessen?"
-#: utils/dates.py:28
-msgid "Nov."
-msgstr "Nov."
+#: .\contrib\comments\templates\comments\form.html.py:12
+msgid "Ratings"
+msgstr "Bewertungen"
-#: utils/dates.py:28
-msgid "Dec."
-msgstr "Dez."
+#: .\contrib\comments\templates\comments\form.html.py:12
+#: .\contrib\comments\templates\comments\form.html.py:23
+msgid "Required"
+msgstr "Erforderlich"
-#: utils/timesince.py:12
-msgid "year"
-msgid_plural "years"
-msgstr[0] "Jahr"
-msgstr[1] "Jahre"
+#: .\contrib\comments\templates\comments\form.html.py:12
+#: .\contrib\comments\templates\comments\form.html.py:23
+msgid "Optional"
+msgstr "Optional"
-#: utils/timesince.py:13
-msgid "month"
-msgid_plural "months"
-msgstr[0] "Monat"
-msgstr[1] "Monate"
+#: .\contrib\comments\templates\comments\form.html.py:23
+msgid "Post a photo"
+msgstr "Ein Bild veröffentlichen"
-#: utils/timesince.py:14
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "Woche"
-msgstr[1] "Wochen"
+#: .\contrib\comments\templates\comments\form.html.py:28
+#: .\contrib\comments\templates\comments\freeform.html.py:5
+msgid "Comment:"
+msgstr "Kommentar:"
-#: utils/timesince.py:15
-msgid "day"
-msgid_plural "days"
-msgstr[0] "Tag"
-msgstr[1] "Tage"
+#: .\contrib\comments\templates\comments\form.html.py:35
+#: .\contrib\comments\templates\comments\freeform.html.py:10
+msgid "Preview comment"
+msgstr "Kommentarvorschau"
-#: utils/timesince.py:16
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "Stunde"
-msgstr[1] "Stunden"
+#: .\contrib\comments\templates\comments\freeform.html.py:4
+msgid "Your name:"
+msgstr "Ihr Name:"
-#: utils/timesince.py:17
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "Minute"
-msgstr[1] "Minuten"
+#: .\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."
-#: utils/translation/trans_real.py:362
-msgid "DATE_FORMAT"
-msgstr "j. N Y"
+#: .\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] ""
+"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"
+"\n"
+"%(text)s"
-#: utils/translation/trans_real.py:363
-msgid "DATETIME_FORMAT"
-msgstr "j. N Y, H:i"
+#: .\contrib\comments\views\comments.py:116
+#, python-format
+msgid ""
+"This comment was posted by a sketchy user:\n"
+"\n"
+"%(text)s"
+msgstr ""
+"Dieser Kommentar ist von einem nicht einschätzbaren Benutzer:\n"
+"\n"
+"%(text)s"
-#: utils/translation/trans_real.py:364
-msgid "TIME_FORMAT"
-msgstr "H:i"
+#: .\contrib\comments\views\comments.py:188
+#: .\contrib\comments\views\comments.py:280
+msgid "Only POSTs are allowed"
+msgstr "Nur POST ist erlaubt"
-#: utils/translation/trans_real.py:380
-msgid "YEAR_MONTH_FORMAT"
-msgstr "F Y"
+#: .\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"
-#: utils/translation/trans_real.py:381
-msgid "MONTH_DAY_FORMAT"
-msgstr "j. F"
+#: .\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)"
-#: conf/global_settings.py:39
-msgid "Arabic"
-msgstr "Arabisch"
+#: .\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."
-#: conf/global_settings.py:40
-msgid "Bengali"
-msgstr "Bengali"
+#: .\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"
-#: conf/global_settings.py:41
-msgid "Czech"
-msgstr "Tschechisch"
+#: .\contrib\comments\views\karma.py:19
+msgid "Anonymous users cannot vote"
+msgstr "Anonyme Benutzer dürfen nicht abstimmen"
-#: conf/global_settings.py:42
-msgid "Welsh"
-msgstr "Walisisch"
+#: .\contrib\comments\views\karma.py:23
+msgid "Invalid comment ID"
+msgstr "Ungültige Kommentar-ID"
-#: conf/global_settings.py:43
-msgid "Danish"
-msgstr "Dnisch"
+#: .\contrib\comments\views\karma.py:25
+msgid "No voting for yourself"
+msgstr "Keine Abstimmung für dich selbst"
-#: conf/global_settings.py:44
-msgid "German"
-msgstr "Deutsch"
+#: .\contrib\contenttypes\models.py:26
+msgid "python model class name"
+msgstr "Python Model-Klassenname"
-#: conf/global_settings.py:45
-msgid "Greek"
-msgstr "Griechisch"
+#: .\contrib\contenttypes\models.py:29
+msgid "content type"
+msgstr "Inhaltstyp"
-#: conf/global_settings.py:46
-msgid "English"
-msgstr "Englisch"
+#: .\contrib\contenttypes\models.py:30
+msgid "content types"
+msgstr "Inhaltstypen"
-#: conf/global_settings.py:47
-msgid "Spanish"
-msgstr "Spanisch"
+#: .\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."
-#: conf/global_settings.py:48
-msgid "Argentinean Spanish"
-msgstr "Argentinisches Spanisch"
+#: .\contrib\flatpages\models.py:9
+msgid "title"
+msgstr "Titel"
-#: conf/global_settings.py:49
-msgid "Finnish"
-msgstr "Finnisch"
+#: .\contrib\flatpages\models.py:10
+msgid "content"
+msgstr "Inhalt"
-#: conf/global_settings.py:50
-msgid "French"
-msgstr "Franzsisch"
+#: .\contrib\flatpages\models.py:11
+msgid "enable comments"
+msgstr "Kommentare aktivieren"
-#: conf/global_settings.py:51
-msgid "Galician"
-msgstr "Galicisch"
+#: .\contrib\flatpages\models.py:12
+msgid "template name"
+msgstr "Name der Vorlage"
-#: conf/global_settings.py:52
-msgid "Hungarian"
-msgstr "Ungarisch"
+#: .\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."
-#: conf/global_settings.py:53
-msgid "Hebrew"
-msgstr "Hebrisch"
+#: .\contrib\flatpages\models.py:14
+msgid "registration required"
+msgstr "Registrierung erforderlich"
-#: conf/global_settings.py:54
-msgid "Icelandic"
-msgstr "Islndisch"
+#: .\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."
-#: conf/global_settings.py:55
-msgid "Italian"
-msgstr "Italienisch"
+#: .\contrib\flatpages\models.py:18
+msgid "flat page"
+msgstr "Webseite"
-#: conf/global_settings.py:56
-msgid "Japanese"
-msgstr "Japanisch"
+#: .\contrib\flatpages\models.py:19
+msgid "flat pages"
+msgstr "Webseiten"
-#: conf/global_settings.py:57
-msgid "Dutch"
-msgstr "Hollndisch"
+#: .\contrib\redirects\models.py:7
+msgid "redirect from"
+msgstr "Umleitung von"
-#: conf/global_settings.py:58
-msgid "Norwegian"
-msgstr "Norwegisch"
+#: .\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/'."
-#: conf/global_settings.py:59
-msgid "Polish"
-msgstr "Polnisch"
+#: .\contrib\redirects\models.py:9
+msgid "redirect to"
+msgstr "Umleitung zu"
-#: conf/global_settings.py:60
-msgid "Brazilian"
-msgstr "Brasilianisch"
+#: .\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."
-#: conf/global_settings.py:61
-msgid "Romanian"
-msgstr "Rumnisch"
+#: .\contrib\redirects\models.py:13
+msgid "redirect"
+msgstr "Umleitung"
-#: conf/global_settings.py:62
-msgid "Russian"
-msgstr "Russisch"
+#: .\contrib\redirects\models.py:14
+msgid "redirects"
+msgstr "Umleitungen"
-#: conf/global_settings.py:63
-msgid "Slovak"
-msgstr "Slowakisch"
+#: .\contrib\sessions\models.py:51
+msgid "session key"
+msgstr "Sitzungs-ID"
-#: conf/global_settings.py:64
-msgid "Slovenian"
-msgstr "Slowenisch"
+#: .\contrib\sessions\models.py:52
+msgid "session data"
+msgstr "Sitzungsdaten"
-#: conf/global_settings.py:65
-msgid "Serbian"
-msgstr "Serbisch"
+#: .\contrib\sessions\models.py:53
+msgid "expire date"
+msgstr "Verfallsdatum"
-#: conf/global_settings.py:66
-msgid "Swedish"
-msgstr "Schwedisch"
+#: .\contrib\sessions\models.py:57
+msgid "session"
+msgstr "Sitzung"
-#: conf/global_settings.py:67
-msgid "Tamil"
-msgstr "Tamilisch"
+#: .\contrib\sessions\models.py:58
+msgid "sessions"
+msgstr "Sitzungen"
-#: conf/global_settings.py:68
-msgid "Turkish"
-msgstr "Trkisch"
+#: .\contrib\sites\models.py:10
+msgid "domain name"
+msgstr "Domainname"
-#: conf/global_settings.py:69
-msgid "Ukrainian"
-msgstr "Ukrainisch"
+#: .\contrib\sites\models.py:11
+msgid "display name"
+msgstr "Anzeigename"
-#: conf/global_settings.py:70
-msgid "Simplified Chinese"
-msgstr "Vereinfachtes Chinesisch"
+#: .\contrib\sites\models.py:15
+msgid "site"
+msgstr "Website"
-#: conf/global_settings.py:71
-msgid "Traditional Chinese"
-msgstr "Traditionelles Chinesisch"
+#: .\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 Schrgstriche "
-"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 "Grobuchstaben sind hier nicht erlaubt."
+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, gltige eMail-Adressen eingeben."
+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 gltige IP-Adresse eingeben."
+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
+#: .\core\validators.py:120
+#: .\newforms\fields.py:126
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 spter sein."
+msgstr "Das Jahr muss 1900 oder später sein."
-#: core/validators.py:143
+#: .\core\validators.py:143
#, python-format
msgid "Invalid date: %s."
-msgstr "Ungltiges Datum: %s"
+msgstr "Ungültiges Datum: %s"
-#: core/validators.py:147 db/models/fields/__init__.py:424
+#: .\core\validators.py:147
+#: .\db\models\fields\__init__.py:448
msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Bitte ein gltiges Datum im Format JJJJ-MM-TT eingeben."
+msgstr "Bitte ein gültiges Datum im Format JJJJ-MM-TT eingeben."
-#: core/validators.py:152
+#: .\core\validators.py:152
msgid "Enter a valid time in HH:MM format."
-msgstr "Bitte eine gltige Zeit im Format SS:MM eingeben."
+msgstr "Bitte eine gültige Zeit im Format SS:MM eingeben."
-#: core/validators.py:156 db/models/fields/__init__.py:488
+#: .\core\validators.py:156
+#: .\db\models\fields\__init__.py:515
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr ""
-"Bitte eine gltige 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
+#: .\core\validators.py:161
+#: .\newforms\fields.py:269
msgid "Enter a valid e-mail address."
-msgstr "Bitte eine gltige eMail-Adresse eingeben"
+msgstr "Bitte eine gültige E-Mail-Adresse eingeben."
-#: core/validators.py:173 core/validators.py:442 forms/__init__.py:667
+#: .\core\validators.py:173
+#: .\core\validators.py:442
+#: .\oldforms\__init__.py:667
msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"Es wurde keine Datei geschickt. 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 Datei, die hochgeladen wurde, ist kein Bild "
-"oder ist defekt."
+#: .\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:184
+#: .\core\validators.py:184
#, python-format
msgid "The URL %s does not point to a valid image."
-msgstr "Die URL %s zeigt nicht auf ein gltiges Bild."
+msgstr "Die URL %s zeigt nicht auf ein gültiges Bild."
-#: core/validators.py:188
+#: .\core\validators.py:188
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-"Telefonnummern mssen im Format XXX-XXX-XXXX sein. \"%s\" ist ungltig."
+msgstr "Telefonnummern müssen das Format XXX-XXX-XXXX haben. \"%s\" ist ungültig."
-#: core/validators.py:196
+#: .\core\validators.py:196
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "Die URL %s zeigt nicht auf ein gltiges QuickTime video."
+msgstr "Die URL %s zeigt nicht auf ein gültiges QuickTime-Video."
-#: core/validators.py:200
+#: .\core\validators.py:200
msgid "A valid URL is required."
-msgstr "Eine gltige URL ist hier verlangt."
+msgstr "Eine gültige URL wird hier verlangt."
-#: core/validators.py:214
+#: .\core\validators.py:214
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
"%s"
msgstr ""
-"Bitte gltiges HTML eingeben. Fehler sind:\n"
+"Bitte gültiges HTML eingeben. Fehler sind:\n"
"%s"
-#: core/validators.py:221
+#: .\core\validators.py:221
#, python-format
msgid "Badly formed XML: %s"
-msgstr "Ungltiges XML: %s"
+msgstr "Ungültiges XML: %s"
-#: core/validators.py:238
+#: .\core\validators.py:238
#, python-format
msgid "Invalid URL: %s"
-msgstr "Ungltige URL: %s"
+msgstr "Ungültige URL: %s"
-#: core/validators.py:243 core/validators.py:245
+#: .\core\validators.py:243
+#: .\core\validators.py:245
#, python-format
msgid "The URL %s is a broken link."
msgstr "Die URL %s funktioniert nicht."
-#: core/validators.py:251
+#: .\core\validators.py:251
msgid "Enter a valid U.S. state abbreviation."
-msgstr "Bitte eine gltige Abkrzung fr einen US-Staat eingeben."
+msgstr "Bitte eine gültige Abkürzung für einen US-Staat eingeben."
-#: core/validators.py:265
+#: .\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] "Keine Schimpfworte! Das Wort %s ist hier nicht gern gesehen!"
-msgstr[1] "Keine Schimpfworte! Die Wrter %s sind hier nicht gern gesehen!"
+msgstr[1] "Keine Schimpfworte! Die Wörter %s sind hier nicht gern gesehen!"
-#: core/validators.py:272
+#: .\core\validators.py:272
#, 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:291
msgid "Please enter something for at least one field."
-msgstr "Bitte mindestens eines der Felder ausfllen."
+msgstr "Bitte mindestens eines der Felder ausfüllen."
-#: core/validators.py:300 core/validators.py:311
+#: .\core\validators.py:300
+#: .\core\validators.py:311
msgid "Please enter both fields or leave them both empty."
-msgstr "Bitte entweder beide Felder ausfllen, oder beide leer lassen."
+msgstr "Bitte entweder beide Felder ausfüllen, oder beide leer lassen."
-#: core/validators.py:318
+#: .\core\validators.py:318
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
-msgstr ""
-"Dieses Feld muss gefllt 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:330
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
-msgstr ""
-"Dieses Feld muss gefllt 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:349
msgid "Duplicate values are not allowed."
msgstr "Doppelte Werte sind hier nicht erlaubt."
-#: core/validators.py:364
+#: .\core\validators.py:364
+#, python-format
msgid "This value must be between %s and %s."
msgstr "Dieser Wert muss zwischen %s und %s sein."
-#: core/validators.py:366
+#: .\core\validators.py:366
+#, python-format
msgid "This value must be at least %s."
msgstr "Dieser Wert muss mindestens %s sein."
-#: core/validators.py:368
+#: .\core\validators.py:368
+#, 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:404
#, 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:415
msgid "Please enter a valid decimal number."
-msgstr "Bitte eine gltige Dezimalzahl eingeben."
+msgstr "Bitte eine gültige Dezimalzahl eingeben."
-#: core/validators.py:419
+#: .\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] "Bitte eine gltige Dezimalzahl mit maximal %s Ziffer eingeben."
-msgstr[1] "Bitte eine gltige Dezimalzahl mit maximal %s Ziffern eingeben."
+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: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] "Bitte eine gltige Dezimalzahl mit maximal %s Ziffer eingeben."
-msgstr[1] "Bitte eine gltige Dezimalzahl mit 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: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] ""
-"Bitte eine gltige Dezimalzahl mit maximal %s Dezimalstelle eingeben."
-msgstr[1] ""
-"Bitte eine gltige 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:435
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr ""
-"Bitte sicherstellen, da die hochgeladene Datei mindestens %s Bytes gross "
-"ist."
+msgstr "Bitte sicherstellen, dass die hochgeladene Datei mindestens %s Bytes groß ist."
-#: core/validators.py:436
+#: .\core\validators.py:436
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr ""
-"Bitte sicherstellen, da die hochgeladene Datei maximal %s Bytes gross ist."
+msgstr "Bitte sicherstellen, dass die hochgeladene Datei maximal %s Bytes groß ist."
-#: core/validators.py:453
+#: .\core\validators.py:453
msgid "The format for this field is wrong."
-msgstr "Das Format fr dieses Feld ist falsch."
+msgstr "Das Format für dieses Feld ist falsch."
-#: core/validators.py:468
+#: .\core\validators.py:468
msgid "This field is invalid."
-msgstr "Dieses Feld ist ungltig."
+msgstr "Dieses Feld ist ungültig."
-#: core/validators.py:504
+#: .\core\validators.py:504
#, python-format
msgid "Could not retrieve anything from %s."
msgstr "Konnte nichts von %s empfangen."
-#: core/validators.py:507
+#: .\core\validators.py:507
#, 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:540
#, 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 schlieen. 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:544
#, 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:549
#, 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 ungltig. 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:554
#, 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 ungltig. 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:558
#, 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:563
#, 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 ungltigen 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\"."
-#: views/generic/create_update.py:43
+#: .\db\models\manipulators.py:305
#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)s wurde erfolgreich angelegt."
+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'."
-#: views/generic/create_update.py:117
+#: .\db\models\fields\related.py:53
#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)s wurde erfolgreich aktualisiert."
+msgid "Please enter a valid %s."
+msgstr "Bitte ein gültiges '%s' eingeben."
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "%(verbose_name)s wurde gelscht"
+#: .\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/manipulators.py:305
+#: .\db\models\fields\related.py:691
#, 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 fr dieses '%(field)"
-"s'."
+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:41
+#: .\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:115 db/models/fields/__init__.py:266
-#: db/models/fields/__init__.py:569 db/models/fields/__init__.py:580
-#: forms/__init__.py:352
+#: .\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
msgid "This field is required."
-msgstr "Dieses Feld ist zwingend."
+msgstr "Dieses Feld ist zwingend erforderlich."
-#: db/models/fields/__init__.py:349
+#: .\db\models\fields\__init__.py:360
msgid "This value must be an integer."
msgstr "Dieser Wert muss eine Ganzzahl sein."
-#: db/models/fields/__init__.py:381
+#: .\db\models\fields\__init__.py:395
msgid "This value must be either True or False."
msgstr "Dieser Wert muss wahr oder falsch sein."
-#: db/models/fields/__init__.py:397
+#: .\db\models\fields\__init__.py:416
msgid "This field cannot be null."
msgstr "Dieses Feld darf nicht leer sein."
-#: db/models/fields/__init__.py:589
+#: .\db\models\fields\__init__.py:619
msgid "Enter a valid filename."
-msgstr "Bitte einen gltigen Dateinamen eingeben"
+msgstr "Bitte einen gültigen Dateinamen eingeben."
-#: db/models/fields/related.py:51
+#: .\newforms\fields.py:101
+#: .\newforms\fields.py:254
#, python-format
-msgid "Please enter a valid %s."
-msgstr "Bitte ein gltiges '%s' eingeben."
+msgid "Ensure this value has at most %d characters."
+msgstr "Bitte sicherstellen, dass der Text maximal %d Zeichen hat."
-#: db/models/fields/related.py:618
-msgid "Separate multiple IDs with commas."
-msgstr "Mehrere IDs knnen mit Komma getrennt werden."
+#: .\newforms\fields.py:103
+#: .\newforms\fields.py:256
+#, python-format
+msgid "Ensure this value has at least %d characters."
+msgstr "Bitte sicherstellen, dass der Text wenigstens %d Zeichen hat."
-#: db/models/fields/related.py:620
-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 gedrckt halten."
+#: .\newforms\fields.py:128
+#, python-format
+msgid "Ensure this value is less than or equal to %s."
+msgstr "Dieser Wert darf maximal %s sein."
-#: db/models/fields/related.py:664
+#: .\newforms\fields.py:130
#, 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 gltige IDs fr %(self)s eingeben. Der Wert %(value)r ist ungltig."
-msgstr[1] ""
-"Bitte gltige IDs fr %(self)s eingeben. Die Werte %(value)r sind ungltig."
+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
+msgid "Enter a valid date."
+msgstr "Bitte ein gültiges Datum eingeben."
+
+#: .\newforms\fields.py:190
+msgid "Enter a valid time."
+msgstr "Bitte eine gültige Uhrzeit eingeben."
+
+#: .\newforms\fields.py:226
+msgid "Enter a valid date/time."
+msgstr "Bitte gültiges Datum und Uhrzeit eingeben."
+
+#: .\newforms\fields.py:240
+msgid "Enter a valid value."
+msgstr "Bitte einen gültigen Wert eingeben."
+
+#: .\newforms\fields.py:287
+#: .\newforms\fields.py:309
+msgid "Enter a valid URL."
+msgstr "Bitte eine gültige Adresse eingeben."
-#: forms/__init__.py:387
+#: .\newforms\fields.py:311
+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
+#, 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
#, 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."
-#: forms/__init__.py:392
+#: .\oldforms\__init__.py:392
msgid "Line breaks are not allowed here."
-msgstr "Zeilenumbrche sind hier nicht erlaubt."
+msgstr "Zeilenumbrüche sind hier nicht erlaubt."
-#: forms/__init__.py:493 forms/__init__.py:566 forms/__init__.py:605
+#: .\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 ""
-"Bitte eine gltige Auswahl treffen; '%(data)s' ist nicht in %(choices)s."
+msgstr "Bitte eine gültige Auswahl treffen; '%(data)s' ist nicht in %(choices)s."
-#: forms/__init__.py:669
+#: .\oldforms\__init__.py:669
msgid "The submitted file is empty."
-msgstr "Die ausgewhlte Datei ist leer."
+msgstr "Die ausgewählte Datei ist leer."
-#: forms/__init__.py:725
+#: .\oldforms\__init__.py:725
msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Bitte eine ganze Zahl zwischen -32.768 und 32.767 eingeben."
+msgstr "Bitte eine Ganzzahl zwischen -32.768 und 32.767 eingeben."
-#: forms/__init__.py:735
+#: .\oldforms\__init__.py:735
msgid "Enter a positive number."
msgstr "Bitte eine ganze, positive Zahl eingeben."
-#: forms/__init__.py:745
+#: .\oldforms\__init__.py:745
msgid "Enter a whole number between 0 and 32,767."
msgstr "Bitte eine ganze Zahl zwischen 0 und 32.767 eingeben."
-#: template/defaultfilters.py:401
+#: .\template\defaultfilters.py:419
msgid "yes,no,maybe"
msgstr "Ja,Nein,Vielleicht"
+
+#: .\utils\dates.py:6
+msgid "Monday"
+msgstr "Montag"
+
+#: .\utils\dates.py:6
+msgid "Tuesday"
+msgstr "Dienstag"
+
+#: .\utils\dates.py:6
+msgid "Wednesday"
+msgstr "Mittwoch"
+
+#: .\utils\dates.py:6
+msgid "Thursday"
+msgstr "Donnerstag"
+
+#: .\utils\dates.py:6
+msgid "Friday"
+msgstr "Freitag"
+
+#: .\utils\dates.py:7
+msgid "Saturday"
+msgstr "Samstag"
+
+#: .\utils\dates.py:7
+msgid "Sunday"
+msgstr "Sonntag"
+
+#: .\utils\dates.py:14
+msgid "January"
+msgstr "Januar"
+
+#: .\utils\dates.py:14
+msgid "February"
+msgstr "Februar"
+
+#: .\utils\dates.py:14
+#: .\utils\dates.py:27
+msgid "March"
+msgstr "März"
+
+#: .\utils\dates.py:14
+#: .\utils\dates.py:27
+msgid "April"
+msgstr "April"
+
+#: .\utils\dates.py:14
+#: .\utils\dates.py:27
+msgid "May"
+msgstr "Mai"
+
+#: .\utils\dates.py:14
+#: .\utils\dates.py:27
+msgid "June"
+msgstr "Juni"
+
+#: .\utils\dates.py:15
+#: .\utils\dates.py:27
+msgid "July"
+msgstr "Juli"
+
+#: .\utils\dates.py:15
+msgid "August"
+msgstr "August"
+
+#: .\utils\dates.py:15
+msgid "September"
+msgstr "September"
+
+#: .\utils\dates.py:15
+msgid "October"
+msgstr "Oktober"
+
+#: .\utils\dates.py:15
+msgid "November"
+msgstr "November"
+
+#: .\utils\dates.py:16
+msgid "December"
+msgstr "Dezember"
+
+#: .\utils\dates.py:19
+msgid "jan"
+msgstr "Jan"
+
+#: .\utils\dates.py:19
+msgid "feb"
+msgstr "Feb"
+
+#: .\utils\dates.py:19
+msgid "mar"
+msgstr "Mär"
+
+#: .\utils\dates.py:19
+msgid "apr"
+msgstr "Apr"
+
+#: .\utils\dates.py:19
+msgid "may"
+msgstr "Mai"
+
+#: .\utils\dates.py:19
+msgid "jun"
+msgstr "Jun"
+
+#: .\utils\dates.py:20
+msgid "jul"
+msgstr "Jul"
+
+#: .\utils\dates.py:20
+msgid "aug"
+msgstr "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 "Dez"
+
+#: .\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 "Dez."
+
+#: .\utils\timesince.py:12
+msgid "year"
+msgid_plural "years"
+msgstr[0] "Jahr"
+msgstr[1] "Jahre"
+
+#: .\utils\timesince.py:13
+msgid "month"
+msgid_plural "months"
+msgstr[0] "Monat"
+msgstr[1] "Monate"
+
+#: .\utils\timesince.py:14
+msgid "week"
+msgid_plural "weeks"
+msgstr[0] "Woche"
+msgstr[1] "Wochen"
+
+#: .\utils\timesince.py:15
+msgid "day"
+msgid_plural "days"
+msgstr[0] "Tag"
+msgstr[1] "Tage"
+
+#: .\utils\timesince.py:16
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "Stunde"
+msgstr[1] "Stunden"
+
+#: .\utils\timesince.py:17
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "Minute"
+msgstr[1] "Minuten"
+
+#: .\utils\translation\trans_real.py:362
+msgid "DATE_FORMAT"
+msgstr "j. N Y"
+
+#: .\utils\translation\trans_real.py:363
+msgid "DATETIME_FORMAT"
+msgstr "j. N Y, H:i"
+
+#: .\utils\translation\trans_real.py:364
+msgid "TIME_FORMAT"
+msgstr "H:i"
+
+#: .\utils\translation\trans_real.py:380
+msgid "YEAR_MONTH_FORMAT"
+msgstr "F Y"
+
+#: .\utils\translation\trans_real.py:381
+msgid "MONTH_DAY_FORMAT"
+msgstr "j. F"
+
+#: .\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
+#, python-format
+msgid "The %(verbose_name)s was updated successfully."
+msgstr "%(verbose_name)s wurde erfolgreich aktualisiert."
+
+#: .\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/de/LC_MESSAGES/djangojs.mo b/django/conf/locale/de/LC_MESSAGES/djangojs.mo
index dc92386f0b..9f39c16444 100644
--- a/django/conf/locale/de/LC_MESSAGES/djangojs.mo
+++ b/django/conf/locale/de/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/django/conf/locale/de/LC_MESSAGES/djangojs.po b/django/conf/locale/de/LC_MESSAGES/djangojs.po
index c39bcd067f..3c0852ebac 100644
--- a/django/conf/locale/de/LC_MESSAGES/djangojs.po
+++ b/django/conf/locale/de/LC_MESSAGES/djangojs.po
@@ -9,7 +9,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-12-09 11:51+0100\n"
"PO-Revision-Date: 2005-12-04 13:21+0100\n"
-"Last-Translator: Georg Bauer <gb@bofh.ms>\n"
+"Last-Translator: Dirk Eschler <dirk.eschler@gmx.net>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -21,11 +21,11 @@ msgstr "Verfgbare %s"
#: contrib/admin/media/js/SelectFilter2.js:41
msgid "Choose all"
-msgstr "alles auswhlen"
+msgstr "Alles auswhlen"
#: contrib/admin/media/js/SelectFilter2.js:46
msgid "Add"
-msgstr "Zufgen"
+msgstr "Hinzufgen"
#: contrib/admin/media/js/SelectFilter2.js:48
msgid "Remove"
@@ -42,7 +42,7 @@ msgstr "Gewnschte Auswahl treffen und "
#: contrib/admin/media/js/SelectFilter2.js:59
msgid "Clear all"
-msgstr "alles abwhlen"
+msgstr "Alles abwhlen"
#: contrib/admin/media/js/dateparse.js:26
#: contrib/admin/media/js/calendar.js:24
@@ -89,7 +89,7 @@ msgstr "Mittag"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168
msgid "Cancel"
-msgstr "Abbruch"
+msgstr "Abbrechen"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162
@@ -107,3 +107,13 @@ msgstr "Gestern"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164
msgid "Tomorrow"
msgstr "Morgen"
+
+#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
+#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
+msgid "Show"
+msgstr "Anzeigen"
+
+#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
+msgid "Hide"
+msgstr "Verbergen"
+
diff --git a/django/conf/locale/es/LC_MESSAGES/django.mo b/django/conf/locale/es/LC_MESSAGES/django.mo
index fe44d24a17..e9105aa64c 100644
--- a/django/conf/locale/es/LC_MESSAGES/django.mo
+++ b/django/conf/locale/es/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/es/LC_MESSAGES/django.po b/django/conf/locale/es/LC_MESSAGES/django.po
index 8036e398b9..d8166e6201 100644
--- a/django/conf/locale/es/LC_MESSAGES/django.po
+++ b/django/conf/locale/es/LC_MESSAGES/django.po
@@ -1,25 +1,1115 @@
-# translation of django.po to Spanish
-# translation of django.po to Espaol
+# translation of django.po to Castellano
# This file is distributed under the same license as the PACKAGE package.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Copyright (C) 2007 THE PACKAGE'S COPYRIGHT HOLDER.
+#
# Ricardo Javier Crdenes Medina <ricardo.cardenes@gmail.com>, 2005.
# Ricardo Javier Cardenes Medina <ricardo.cardenes@gmail.com>, 2005.
-#
+# AgarFu <heaven@croasanaso.sytes.net>, 2007.
+# Mario Gonzalez <gonzalemario @t gmail.com>, 2007
msgid ""
msgstr ""
"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 10:11+0200\n"
-"PO-Revision-Date: 2005-11-28 15:28+0000\n"
-"Last-Translator: Ricardo Javier Cardenes Medina <ricardo.cardenes@gmail."
-"com>\n"
-"Language-Team: Spanish <en@li.org>\n"
+"POT-Creation-Date: 2007-02-24 17:08+0000\n"
+"PO-Revision-Date: 2007-02-24 18:02-0600\n"
+"Last-Translator: Mario Gonzalez <gonzalemario @t gmail.com>\n"
+"Language-Team: Castellano <Django-I18N@googlegroups.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.10.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+#: utils/dates.py:6
+msgid "Monday"
+msgstr "Lunes"
+
+#: utils/dates.py:6
+msgid "Tuesday"
+msgstr "Martes"
+
+#: utils/dates.py:6
+msgid "Wednesday"
+msgstr "Mircoles"
+
+#: utils/dates.py:6
+msgid "Thursday"
+msgstr "Jueves"
+
+#: utils/dates.py:6
+msgid "Friday"
+msgstr "Viernes"
+
+#: utils/dates.py:7
+msgid "Saturday"
+msgstr "Sbado"
+
+#: utils/dates.py:7
+msgid "Sunday"
+msgstr "Domingo"
+
+#: utils/dates.py:14
+msgid "January"
+msgstr "Enero"
+
+#: utils/dates.py:14
+msgid "February"
+msgstr "Febrero"
+
+#: utils/dates.py:14 utils/dates.py:27
+msgid "March"
+msgstr "Marzo"
+
+#: utils/dates.py:14 utils/dates.py:27
+msgid "April"
+msgstr "Abril"
+
+#: utils/dates.py:14 utils/dates.py:27
+msgid "May"
+msgstr "Mayo"
+
+#: utils/dates.py:14 utils/dates.py:27
+msgid "June"
+msgstr "Junio"
+
+#: utils/dates.py:15 utils/dates.py:27
+msgid "July"
+msgstr "Julio"
+
+#: utils/dates.py:15
+msgid "August"
+msgstr "Agosto"
+
+#: utils/dates.py:15
+msgid "September"
+msgstr "Septiembre"
+
+#: utils/dates.py:15
+msgid "October"
+msgstr "Octubre"
+
+#: utils/dates.py:15
+msgid "November"
+msgstr "Noviembre"
+
+#: utils/dates.py:16
+msgid "December"
+msgstr "Diciembre"
+
+#: utils/dates.py:19
+msgid "jan"
+msgstr "ene"
+
+#: utils/dates.py:19
+msgid "feb"
+msgstr "feb"
+
+#: utils/dates.py:19
+msgid "mar"
+msgstr "mar"
+
+#: utils/dates.py:19
+msgid "apr"
+msgstr "abr"
+
+#: utils/dates.py:19
+msgid "may"
+msgstr "may"
+
+#: utils/dates.py:19
+msgid "jun"
+msgstr "jun"
+
+#: utils/dates.py:20
+msgid "jul"
+msgstr "jul"
+
+#: utils/dates.py:20
+msgid "aug"
+msgstr "ago"
+
+#: utils/dates.py:20
+msgid "sep"
+msgstr "sep"
+
+#: utils/dates.py:20
+msgid "oct"
+msgstr "oct"
+
+#: utils/dates.py:20
+msgid "nov"
+msgstr "nov"
+
+#: utils/dates.py:20
+msgid "dec"
+msgstr "dic"
+
+#: utils/dates.py:27
+msgid "Jan."
+msgstr "Ene."
+
+#: utils/dates.py:27
+msgid "Feb."
+msgstr "Feb."
+
+#: utils/dates.py:28
+msgid "Aug."
+msgstr "Ago."
+
+#: utils/dates.py:28
+msgid "Sept."
+msgstr "Sept."
+
+#: utils/dates.py:28
+msgid "Oct."
+msgstr "Oct."
+
+#: utils/dates.py:28
+msgid "Nov."
+msgstr "Nov."
+
+#: utils/dates.py:28
+msgid "Dec."
+msgstr "Dic."
+
+#: utils/timesince.py:12
+msgid "year"
+msgid_plural "years"
+msgstr[0] "ao"
+msgstr[1] "aos"
+
+#: utils/timesince.py:13
+msgid "month"
+msgid_plural "months"
+msgstr[0] "mes"
+msgstr[1] "meses"
+
+#: utils/timesince.py:14
+msgid "week"
+msgid_plural "weeks"
+msgstr[0] "semana"
+msgstr[1] "semanas"
+
+#: utils/timesince.py:15
+msgid "day"
+msgid_plural "days"
+msgstr[0] "da"
+msgstr[1] "das"
+
+#: utils/timesince.py:16
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "hora"
+msgstr[1] "horas"
+
+#: utils/timesince.py:17
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "minuto"
+msgstr[1] "minutos"
+
+#: utils/translation/trans_real.py:362
+msgid "DATE_FORMAT"
+msgstr "j N Y"
+
+#: utils/translation/trans_real.py:363
+msgid "DATETIME_FORMAT"
+msgstr "j N Y P"
+
+#: utils/translation/trans_real.py:364
+msgid "TIME_FORMAT"
+msgstr "P"
+
+#: utils/translation/trans_real.py:380
+msgid "YEAR_MONTH_FORMAT"
+msgstr "F Y"
+
+#: utils/translation/trans_real.py:381
+msgid "MONTH_DAY_FORMAT"
+msgstr "j \\de F"
+
+#: conf/global_settings.py:39
+msgid "Arabic"
+msgstr "rabe"
+
+#: conf/global_settings.py:40
+msgid "Bengali"
+msgstr "Bengal"
+
+#: conf/global_settings.py:41
+msgid "Catalan"
+msgstr "Cataln"
+
+#: conf/global_settings.py:42
+msgid "Czech"
+msgstr "Checo"
+
+#: conf/global_settings.py:43
+msgid "Welsh"
+msgstr "Gals"
+
+#: conf/global_settings.py:44
+msgid "Danish"
+msgstr "Dans"
+
+#: conf/global_settings.py:45
+msgid "German"
+msgstr "Alemn"
+
+#: conf/global_settings.py:46
+msgid "Greek"
+msgstr "Griego"
+
+#: conf/global_settings.py:47
+msgid "English"
+msgstr "Ingls"
+
+#: conf/global_settings.py:48
+msgid "Spanish"
+msgstr "Espaol"
+
+#: conf/global_settings.py:49
+msgid "Argentinean Spanish"
+msgstr "Espaol Argentino"
+
+#: conf/global_settings.py:50
+msgid "Finnish"
+msgstr "Fins"
+
+#: conf/global_settings.py:51
+msgid "French"
+msgstr "Francs"
+
+#: conf/global_settings.py:52
+msgid "Galician"
+msgstr "Gallego"
+
+#: conf/global_settings.py:53
+msgid "Hungarian"
+msgstr "Hngaro"
+
+#: conf/global_settings.py:54
+msgid "Hebrew"
+msgstr "Hebreo"
+
+#: conf/global_settings.py:55
+msgid "Icelandic"
+msgstr "Islands"
+
+#: conf/global_settings.py:56
+msgid "Italian"
+msgstr "Italiano"
+
+#: conf/global_settings.py:57
+msgid "Japanese"
+msgstr "Japons"
+
+#: conf/global_settings.py:58
+msgid "Latvian"
+msgstr ""
+
+#: conf/global_settings.py:59
+msgid "Macedonian"
+msgstr "Macedonio"
+
+#: conf/global_settings.py:60
+msgid "Dutch"
+msgstr "Alemn"
+
+#: conf/global_settings.py:61
+msgid "Norwegian"
+msgstr "Noruego"
+
+#: conf/global_settings.py:62
+msgid "Polish"
+msgstr "Polaco"
+
+#: conf/global_settings.py:63
+msgid "Brazilian"
+msgstr "Brasileo"
+
+#: conf/global_settings.py:64
+msgid "Romanian"
+msgstr "Rumano"
+
+#: conf/global_settings.py:65
+msgid "Russian"
+msgstr "Ruso"
+
+#: conf/global_settings.py:66
+msgid "Slovak"
+msgstr "Eslovaco"
+
+#: conf/global_settings.py:67
+msgid "Slovenian"
+msgstr "Esloveno"
+
+#: conf/global_settings.py:68
+msgid "Serbian"
+msgstr "Serbio"
+
+#: conf/global_settings.py:69
+msgid "Swedish"
+msgstr "Sueco"
+
+#: conf/global_settings.py:70
+msgid "Tamil"
+msgstr "Tamil"
+
+#: conf/global_settings.py:71
+msgid "Turkish"
+msgstr "Turco"
+
+#: conf/global_settings.py:72
+msgid "Ukrainian"
+msgstr "Ucraniano"
+
+#: conf/global_settings.py:73
+msgid "Simplified Chinese"
+msgstr "Chino simplificado"
+
+#: conf/global_settings.py:74
+msgid "Traditional Chinese"
+msgstr "Chino tradicional"
+
+#: db/models/manipulators.py:305
+#, python-format
+msgid "%(object)s with this %(type)s already exists for the given %(field)s."
+msgstr "%(object)s de este %(type)s ya existen en este %(field)s."
+
+#: db/models/manipulators.py:306 contrib/admin/views/main.py:335
+#: contrib/admin/views/main.py:337 contrib/admin/views/main.py:339
+msgid "and"
+msgstr "y"
+
+#: db/models/fields/related.py:53
+#, python-format
+msgid "Please enter a valid %s."
+msgstr "Por favor, introduzca un %s vlido."
+
+#: db/models/fields/related.py:642
+msgid "Separate multiple IDs with commas."
+msgstr "Separe mltiples IDs con comas."
+
+#: db/models/fields/related.py:644
+msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgstr "Mantenga presionado \"Control\", o \"Command\" en un Mac, para seleccionar ms de 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] ""
+"Por favor, introduzca IDs de %(self)s vlidos. El valor %(value)r no es "
+"vlido."
+msgstr[1] ""
+"Por favor, introduzca IDs de %(self)s vlidos. Los valores %(value)r no son "
+"vlidos."
+
+#: db/models/fields/__init__.py:42
+#, python-format
+msgid "%(optname)s with this %(fieldname)s already exists."
+msgstr "Ya existe %(optname)s con este %(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
+#: newforms/models.py:177 newforms/fields.py:78 newforms/fields.py:374
+#: newforms/fields.py:450 newforms/fields.py:461 oldforms/__init__.py:352
+msgid "This field is required."
+msgstr "Este campo es obligatorio."
+
+#: db/models/fields/__init__.py:366
+msgid "This value must be an integer."
+msgstr "Este valor debe ser un entero."
+
+#: db/models/fields/__init__.py:401
+msgid "This value must be either True or False."
+msgstr "Este valor debe ser Verdadero o Falso."
+
+#: db/models/fields/__init__.py:422
+msgid "This field cannot be null."
+msgstr "Este campo no puede estar vaco."
+
+#: db/models/fields/__init__.py:454 core/validators.py:147
+msgid "Enter a valid date in YYYY-MM-DD format."
+msgstr "Introduzca una fecha vlida en formato AAAA-MM-DD."
+
+#: db/models/fields/__init__.py:521 core/validators.py:156
+msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
+msgstr "Introduzca una fecha/hora vlida en formato AAAA-MM-DD HH:MM."
+
+#: db/models/fields/__init__.py:625
+msgid "Enter a valid filename."
+msgstr "Introduzca un nombre de fichero vlido"
+
+#: template/defaultfilters.py:436
+msgid "yes,no,maybe"
+msgstr "si,no,tal vez"
+
+#: newforms/models.py:164 newforms/fields.py:360
+msgid "Select a valid choice. That choice is not one of the available choices."
+msgstr "Escoja una opcin vlida. Esa opcin no est entre las aceptadas."
+
+#: newforms/models.py:181 newforms/fields.py:378 newforms/fields.py:454
+msgid "Enter a list of values."
+msgstr "Introduzca una lista de valores."
+
+#: newforms/models.py:187 newforms/fields.py:387
+#, python-format
+msgid "Select a valid choice. %s is not one of the available choices."
+msgstr "Escoja una opcin vlida; '%s' no es una de las opciones disponibles."
+
+#: newforms/fields.py:101 newforms/fields.py:254
+#, python-format
+msgid "Ensure this value has at most %d characters."
+msgstr "Asegrese de que su texto tiene a lo ms %d caracteres."
+
+#: newforms/fields.py:103 newforms/fields.py:256
+#, python-format
+msgid "Ensure this value has at least %d characters."
+msgstr "Asegrese de que su texto tiene al menos %d caracteres."
+
+#: newforms/fields.py:126 core/validators.py:120
+msgid "Enter a whole number."
+msgstr "Introduzca un nmero entero."
+
+#: newforms/fields.py:128
+#, python-format
+msgid "Ensure this value is less than or equal to %s."
+msgstr "Asegrese de que este valor es menor o igual a %s."
+
+#: newforms/fields.py:130
+#, python-format
+msgid "Ensure this value is greater than or equal to %s."
+msgstr "Asegrese de que este valor es mayor o igual a %s."
+
+#: newforms/fields.py:163
+msgid "Enter a valid date."
+msgstr "Introduzca una fecha vlida."
+
+#: newforms/fields.py:190
+msgid "Enter a valid time."
+msgstr "Introduzca una hora vlida."
+
+#: newforms/fields.py:226
+msgid "Enter a valid date/time."
+msgstr "Introduzca una fecha/hora vlida."
+
+#: newforms/fields.py:240
+msgid "Enter a valid value."
+msgstr "Introduzca un valor correcto."
+
+#: newforms/fields.py:269 core/validators.py:161
+msgid "Enter a valid e-mail address."
+msgstr "Introduzca una direccin de correo electrnico vlida"
+
+#: newforms/fields.py:287 newforms/fields.py:309
+msgid "Enter a valid URL."
+msgstr "Introduzca una URL vlida."
+
+#: newforms/fields.py:311
+msgid "This URL appears to be a broken link."
+msgstr "La URL parece ser un enlace roto."
+
+#: newforms/widgets.py:170 oldforms/__init__.py:572
+#: contrib/admin/filterspecs.py:150
+msgid "Unknown"
+msgstr "Desconocido"
+
+#: newforms/widgets.py:170 oldforms/__init__.py:572
+#: contrib/admin/filterspecs.py:143
+msgid "Yes"
+msgstr "S"
+
+#: newforms/widgets.py:170 oldforms/__init__.py:572
+#: contrib/admin/filterspecs.py:143
+msgid "No"
+msgstr "No"
+
+#: core/validators.py:64
+msgid "This value must contain only letters, numbers and underscores."
+msgstr "Este valor debe contener slo letras, nmeros y guiones bajos."
+
+#: core/validators.py:68
+msgid ""
+"This value must contain only letters, numbers, underscores, dashes or "
+"slashes."
+msgstr "Este valor debe contener letras, nmeros, guiones bajos o barras solamente."
+
+#: core/validators.py:72
+msgid "This value must contain only letters, numbers, underscores or hyphens."
+msgstr "Este valor debe contener slo letras, nmeros, guiones bajos o medios."
+
+#: core/validators.py:76
+msgid "Uppercase letters are not allowed here."
+msgstr "No se admiten letras maysculas."
+
+#: core/validators.py:80
+msgid "Lowercase letters are not allowed here."
+msgstr "No se admiten letras minsculas."
+
+#: core/validators.py:87
+msgid "Enter only digits separated by commas."
+msgstr "Introduzca slo dgitos separados por comas."
+
+#: core/validators.py:99
+msgid "Enter valid e-mail addresses separated by commas."
+msgstr "Introduzca direcciones de correo vlidas separadas por comas."
+
+#: core/validators.py:103
+msgid "Please enter a valid IP address."
+msgstr "Por favor introduzca una direccin IP vlida."
+
+#: core/validators.py:107
+msgid "Empty values are not allowed here."
+msgstr "No se admiten valores vacos."
+
+#: core/validators.py:111
+msgid "Non-numeric characters aren't allowed here."
+msgstr "No se admiten caracteres no numricos."
+
+#: core/validators.py:115
+msgid "This value can't be comprised solely of digits."
+msgstr "Este valor no puede comprender slo dgitos."
+
+#: core/validators.py:124
+msgid "Only alphabetical characters are allowed here."
+msgstr "Slo se admiten caracteres alfabticos."
+
+#: core/validators.py:139
+msgid "Year must be 1900 or later."
+msgstr "El ao debe ser 1900 o posterior."
+
+#: core/validators.py:143
+#, python-format
+msgid "Invalid date: %s."
+msgstr "Fecha no vlida: %s"
+
+#: core/validators.py:152
+msgid "Enter a valid time in HH:MM format."
+msgstr "Introduzca una hora vlida en formato HH:MM."
+
+#: core/validators.py:173 core/validators.py:443 oldforms/__init__.py:667
+msgid "No file was submitted. Check the encoding type on the form."
+msgstr ""
+"No se ha enviado ningn fichero. Compruebe el tipo de codificacin en el "
+"formulario."
+
+#: core/validators.py:177
+msgid ""
+"Upload a valid image. The file you uploaded was either not an image or a "
+"corrupted image."
+msgstr ""
+"Enve una imagen vlida. El fichero que ha enviado no era una imagen o se "
+"trataba de una imagen corrupta."
+
+#: core/validators.py:184
+#, python-format
+msgid "The URL %s does not point to a valid image."
+msgstr "La URL %s no apunta a una imagen vlida."
+
+#: core/validators.py:188
+#, 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\" "
+"no es vlido."
+
+#: core/validators.py:196
+#, python-format
+msgid "The URL %s does not point to a valid QuickTime video."
+msgstr "La URL %s no apunta a un vdeo QuickTime vlido."
+
+#: core/validators.py:200
+msgid "A valid URL is required."
+msgstr "Se precisa una URL vlida."
+
+#: core/validators.py:214
+#, python-format
+msgid ""
+"Valid HTML is required. Specific errors are:\n"
+"%s"
+msgstr ""
+"Se precisa HTML vlido. Los errores especficos son:\n"
+"%s"
+
+#: core/validators.py:221
+#, python-format
+msgid "Badly formed XML: %s"
+msgstr "XML mal formado: %s"
+
+#: core/validators.py:238
+#, python-format
+msgid "Invalid URL: %s"
+msgstr "URL no vlida: %s"
+
+#: core/validators.py:243 core/validators.py:245
+#, python-format
+msgid "The URL %s is a broken link."
+msgstr "La URL %s es un enlace roto."
+
+#: core/validators.py:251
+msgid "Enter a valid U.S. state abbreviation."
+msgstr "Introduzca una abreviatura vlida de estado de los EEUU."
+
+#: 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] "Cuida tu vocabulario! Aqu no admitimos la palabra %s."
+msgstr[1] "Cuida tu vocabulario! Aqu no admitimos las palabras %s."
+
+#: core/validators.py:272
+#, python-format
+msgid "This field must match the '%s' field."
+msgstr "Este campo debe concordar con el campo '%s'."
+
+#: core/validators.py:291
+msgid "Please enter something for at least one field."
+msgstr "Por favor, introduzca algo en al menos un campo."
+
+#: core/validators.py:300 core/validators.py:311
+msgid "Please enter both fields or leave them both empty."
+msgstr "Por favor, rellene ambos campos o deje ambos vacos."
+
+#: core/validators.py:318
+#, python-format
+msgid "This field must be given if %(field)s is %(value)s"
+msgstr "Se debe proporcionar este campo si %(field)s es %(value)s"
+
+#: core/validators.py:330
+#, python-format
+msgid "This field must be given if %(field)s is not %(value)s"
+msgstr "Se debe proporcionar este campo si %(field)s no es %(value)s"
+
+#: core/validators.py:349
+msgid "Duplicate values are not allowed."
+msgstr "No se admiten valores duplicados."
+
+#: core/validators.py:364
+#, python-format
+msgid "This value must be between %(lower)s and %(upper)s."
+msgstr "Este valor debe estar entre %(lower)s y %(upper)s."
+
+#: core/validators.py:367
+#, python-format
+msgid "This value must be at least %s."
+msgstr "Este valor debe ser como mnimo %s."
+
+#: core/validators.py:369
+#, python-format
+msgid "This value must be no more than %s."
+msgstr "Este valor no debe ser mayor que %s."
+
+#: core/validators.py:405
+#, python-format
+msgid "This value must be a power of %s."
+msgstr "Este valor debe ser una potencia de %s."
+
+#: core/validators.py:416
+msgid "Please enter a valid decimal number."
+msgstr "Por favor, introduzca un nmero decimal vlido."
+
+#: core/validators.py:420
+#, python-format
+msgid "Please enter a valid decimal number with at most %s total digit."
+msgid_plural "Please enter a valid decimal number with at most %s total digits."
+msgstr[0] ""
+"Por favor, introduzca un nmero decimal vlido con a lo ms %s dgito en "
+"total."
+msgstr[1] ""
+"Por favor, introduzca un nmero decimal vlido con a lo ms %s dgitos en "
+"total."
+
+#: core/validators.py:423
+#, python-format
+msgid "Please enter a valid decimal number with a whole part of at most %s digit."
+msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits."
+msgstr[0] ""
+"Por favor, introduzca un nmero decimal vlido con a lo ms %s dgito en "
+"total."
+msgstr[1] ""
+"Por favor, introduzca un nmero decimal vlido con a lo ms %s dgitos en "
+"total."
+
+#: core/validators.py:426
+#, python-format
+msgid "Please enter a valid decimal number with at most %s decimal place."
+msgid_plural "Please enter a valid decimal number with at most %s decimal places."
+msgstr[0] ""
+"Por favor, introduzca un nmero decimal vlido con a lo ms %s dgito "
+"decimal."
+msgstr[1] ""
+"Por favor, introduzca un nmero decimal vlido con a lo ms %s dgitos "
+"decimales."
+
+#: core/validators.py:436
+#, python-format
+msgid "Make sure your uploaded file is at least %s bytes big."
+msgstr "Asegrese de que el fichero que enva tiene al menos %s bytes."
+
+#: core/validators.py:437
+#, python-format
+msgid "Make sure your uploaded file is at most %s bytes big."
+msgstr "Asegrese de que el fichero que enva tiene como mximo %s bytes."
+
+#: core/validators.py:454
+msgid "The format for this field is wrong."
+msgstr "El formato de este campo es incorrecto."
+
+#: core/validators.py:469
+msgid "This field is invalid."
+msgstr "Este campo no es vlido."
+
+#: core/validators.py:505
+#, python-format
+msgid "Could not retrieve anything from %s."
+msgstr "No pude obtener nada de %s."
+
+#: core/validators.py:508
+#, python-format
+msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
+msgstr ""
+"La URL %(url)s devolvi la cabecera Content-Type '%(contenttype)s', que no "
+"es vlida."
+
+#: core/validators.py:541
+#, python-format
+msgid ""
+"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
+"\"%(start)s\".)"
+msgstr ""
+"Por favor, cierre la etiqueta %(tag)s de la lnea %(line)s. (La lnea "
+"empieza por \"%(start)s\".)"
+
+#: core/validators.py:545
+#, python-format
+msgid ""
+"Some text starting on line %(line)s is not allowed in that context. (Line "
+"starts with \"%(start)s\".)"
+msgstr ""
+"Parte del texto que comienza en la lnea %(line)s no est permitido en ese "
+"contexto. (La lnea empieza por \"%(start)s\".)"
+
+#: core/validators.py:550
+#, python-format
+msgid ""
+"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
+"(start)s\".)"
+msgstr ""
+"El \"%(attr)s\" de la lnea %(line)s no es un atributo vlido. (La lnea "
+"empieza por \"%(start)s\".)"
+
+#: core/validators.py:555
+#, python-format
+msgid ""
+"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
+"(start)s\".)"
+msgstr ""
+"La \"<%(tag)s>\" de la lnea %(line)s no es una etiqueta vlida. (La lnea "
+"empieza por \"%(start)s\".)"
+
+#: core/validators.py:559
+#, python-format
+msgid ""
+"A tag on line %(line)s is missing one or more required attributes. (Line "
+"starts with \"%(start)s\".)"
+msgstr ""
+"A una etiqueta de la lnea %(line)s le faltan uno o ms atributos "
+"requeridos. (La lnea empieza por \"%(start)s\".)"
+
+#: core/validators.py:564
+#, python-format
+msgid ""
+"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
+"starts with \"%(start)s\".)"
+msgstr ""
+"El atributo \"%(attr)s\" de la lnea %(line)s tiene un valor que no es "
+"vlido. (La lnea empieza por \"%(start)s\".)"
+
+#: 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] "Asegrese de que su texto tiene menos de %s carcter."
+msgstr[1] "Asegrese de que su texto tiene menos de %s caracteres."
+
+#: oldforms/__init__.py:392
+msgid "Line breaks are not allowed here."
+msgstr "No se permiten saltos de lnea."
+
+#: 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 "Escoja una opcin vlida; '%(data)s' no est en %(choices)s."
+
+#: oldforms/__init__.py:669
+msgid "The submitted file is empty."
+msgstr "El fichero enviado est vaco."
+
+#: oldforms/__init__.py:725
+msgid "Enter a whole number between -32,768 and 32,767."
+msgstr "Introduzca un nmero entero entre -32,768 y 32,767."
+
+#: oldforms/__init__.py:735
+msgid "Enter a positive number."
+msgstr "Introduzca un nmero positivo."
+
+#: oldforms/__init__.py:745
+msgid "Enter a whole number between 0 and 32,767."
+msgstr "Introduzca un nmero entero entre 0 y 32,767."
+
+#: contrib/contenttypes/models.py:26
+msgid "python model class name"
+msgstr "nombre de mdulo python"
+
+#: contrib/contenttypes/models.py:29
+msgid "content type"
+msgstr "tipo de contenido"
+
+#: contrib/contenttypes/models.py:30
+msgid "content types"
+msgstr "tipos de contenido"
+
+#: contrib/flatpages/models.py:7 contrib/admin/views/doc.py:318
+msgid "URL"
+msgstr "URL"
+
+#: contrib/flatpages/models.py:8
+msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
+msgstr ""
+"Ejemplo: '/about/contact/'. Asegrese de que pone barras al principio y al "
+"final."
+
+#: contrib/flatpages/models.py:9
+msgid "title"
+msgstr "ttulo"
+
+#: contrib/flatpages/models.py:10
+msgid "content"
+msgstr "contenido"
+
+#: contrib/flatpages/models.py:11
+msgid "enable comments"
+msgstr "admitir comentarios"
+
+#: contrib/flatpages/models.py:12
+msgid "template name"
+msgstr "nombre de plantilla"
+
+#: contrib/flatpages/models.py:13
+msgid ""
+"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
+"will use 'flatpages/default.html'."
+msgstr ""
+"Ejemplo: 'flatpages/contact_page.html'. Si no es proporcionado, el sistema usar "
+"'flatpages/default.html'."
+
+#: contrib/flatpages/models.py:14
+msgid "registration required"
+msgstr "debe estar registrado"
+
+#: contrib/flatpages/models.py:14
+msgid "If this is checked, only logged-in users will be able to view the page."
+msgstr "Si est marcado, slo los usuarios registrados podrn ver la pgina."
+
+#: contrib/flatpages/models.py:18
+msgid "flat page"
+msgstr "pgina esttica"
+
+#: contrib/flatpages/models.py:19
+msgid "flat pages"
+msgstr "pginas estticas"
+
+#: contrib/auth/views.py:39
+msgid "Logged out"
+msgstr "Sesin terminada"
+
+#: contrib/auth/models.py:38 contrib/auth/models.py:57
+msgid "name"
+msgstr "nombre"
+
+#: contrib/auth/models.py:40
+msgid "codename"
+msgstr "nombre en cdigo"
+
+#: contrib/auth/models.py:42
+msgid "permission"
+msgstr "permiso"
+
+#: contrib/auth/models.py:43 contrib/auth/models.py:58
+msgid "permissions"
+msgstr "permisos"
+
+#: contrib/auth/models.py:60
+msgid "group"
+msgstr "grupo"
+
+#: contrib/auth/models.py:61 contrib/auth/models.py:100
+msgid "groups"
+msgstr "grupos"
+
+#: contrib/auth/models.py:90
+msgid "username"
+msgstr "nombre de usuario"
+
+#: contrib/auth/models.py:90
+msgid ""
+"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
+"digits and underscores)."
+msgstr ""
+"Requerido. 30 caracteres o menos. Slo caracteres alfanumricos (letras, "
+"dgutos y guiones bajos)."
+
+#: contrib/auth/models.py:91
+msgid "first name"
+msgstr "nombre"
+
+#: contrib/auth/models.py:92
+msgid "last name"
+msgstr "apellidos"
+
+#: contrib/auth/models.py:93
+msgid "e-mail address"
+msgstr "direccin de correo"
+
+#: contrib/auth/models.py:94
+msgid "password"
+msgstr "clave"
+
+#: contrib/auth/models.py:94
+msgid ""
+"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
+"password form</a>."
+msgstr ""
+"Use'[algo]$[sal]$[hash hexadecimal]' o use <a href=\"password/\">el "
+"formulario para cambiar la contrasea</a>."
+
+#: contrib/auth/models.py:95
+msgid "staff status"
+msgstr "es staff"
+
+#: contrib/auth/models.py:95
+msgid "Designates whether the user can log into this admin site."
+msgstr "Indica si el usuario puede entrar en este sitio de administracin."
+
+#: contrib/auth/models.py:96
+msgid "active"
+msgstr "activo"
+
+#: contrib/auth/models.py:96
+msgid ""
+"Designates whether this user can log into the Django admin. Unselect this "
+"instead of deleting accounts."
+msgstr ""
+"Indica si el usuario puede entrar en este sitio de administracin. Desmarque "
+"esto en lugar de borrar la cuenta."
+
+#: contrib/auth/models.py:97
+msgid "superuser status"
+msgstr "es superusuario"
+
+#: contrib/auth/models.py:97
+msgid ""
+"Designates that this user has all permissions without explicitly assigning "
+"them."
+msgstr ""
+"Indica que este usuario tiene todos los permisos sin asignrselos "
+"explcitamente."
+
+#: contrib/auth/models.py:98
+msgid "last login"
+msgstr "ltimo registro"
+
+#: contrib/auth/models.py:99
+msgid "date joined"
+msgstr "fecha de creacin"
+
+#: 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 ""
+"Adems de los permisos asignados manualmente, este usuario tambin tendr "
+"todos los permisos de los grupos en los que est."
+
+#: contrib/auth/models.py:102
+msgid "user permissions"
+msgstr "permisos"
+
+#: contrib/auth/models.py:105
+msgid "user"
+msgstr "usuario"
+
+#: contrib/auth/models.py:106
+msgid "users"
+msgstr "usuarios"
+
+#: contrib/auth/models.py:111
+msgid "Personal info"
+msgstr "Informacin personal"
+
+#: contrib/auth/models.py:112
+msgid "Permissions"
+msgstr "Permisos"
+
+#: contrib/auth/models.py:113
+msgid "Important dates"
+msgstr "Fechas importantes"
+
+#: contrib/auth/models.py:114
+msgid "Groups"
+msgstr "Grupos"
+
+#: contrib/auth/models.py:258
+msgid "message"
+msgstr "mensaje"
+
+#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
+msgid "The two password fields didn't match."
+msgstr "Las dos contraseas no coinciden."
+
+#: contrib/auth/forms.py:25
+msgid "A user with that username already exists."
+msgstr "Ya existe un usuario con este nombre."
+
+#: contrib/auth/forms.py:53
+msgid ""
+"Your Web browser doesn't appear to have cookies enabled. Cookies are "
+"required for logging in."
+msgstr ""
+"Tu navegador de internet parece no tener las cookies habilitadas. Las "
+"cookies se necesitan para poder ingresar."
+
+#: 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 ""
+"Por favor, introduzca un correcto nombre de usuario y contrasea. Note que "
+"ambos campos son sensibles a maysculas/minsculas."
+
+#: contrib/auth/forms.py:62
+msgid "This account is inactive."
+msgstr "Esta cuenta est inactiva."
+
+#: contrib/auth/forms.py:85
+msgid ""
+"That e-mail address doesn't have an associated user account. Are you sure "
+"you've registered?"
+msgstr ""
+"Esta direccin de correo electrnico no tiene una cuenta de usuario "
+"asociada. Est seguro de que se ha registrado?"
+
+#: contrib/auth/forms.py:117
+msgid "The two 'new password' fields didn't match."
+msgstr "Las contraseas introducidas en los campos 'nueva contrasea' no coinciden."
+
+#: 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 "
+"correctamente."
+
#: contrib/comments/models.py:67 contrib/comments/models.py:166
msgid "object ID"
msgstr "ID de objeto"
@@ -77,7 +1167,7 @@ msgstr "fecha/hora de envo"
msgid "is public"
msgstr "es pblico"
-#: contrib/comments/models.py:85 contrib/admin/views/doc.py:289
+#: contrib/comments/models.py:85 contrib/admin/views/doc.py:307
msgid "IP address"
msgstr "Direccin IP"
@@ -94,9 +1184,8 @@ msgstr ""
"\"Este comentario ha sido eliminado\"."
#: contrib/comments/models.py:91
-#, fuzzy
msgid "comments"
-msgstr "comentario"
+msgstr "comentarios"
#: contrib/comments/models.py:131 contrib/comments/models.py:207
msgid "Content object"
@@ -130,14 +1219,12 @@ msgid "approved by staff"
msgstr "aprobado por el staff"
#: contrib/comments/models.py:176
-#, fuzzy
msgid "free comment"
-msgstr "Comentario libre"
+msgstr "comentario libre"
#: contrib/comments/models.py:177
-#, fuzzy
msgid "free comments"
-msgstr "Comentarios libres"
+msgstr "comentarios libres"
#: contrib/comments/models.py:233
msgid "score"
@@ -148,19 +1235,17 @@ msgid "score date"
msgstr "fecha de la puntuacin"
#: contrib/comments/models.py:237
-#, fuzzy
msgid "karma score"
-msgstr "Punto karma"
+msgstr "punto karma"
#: contrib/comments/models.py:238
-#, fuzzy
msgid "karma scores"
-msgstr "Puntos karma"
+msgstr "puntos karma"
#: contrib/comments/models.py:242
#, python-format
msgid "%(score)d rating by %(user)s"
-msgstr "Puntuado %(score)d por %(user)s"
+msgstr "puntuado %(score)d por %(user)s"
#: contrib/comments/models.py:258
#, python-format
@@ -178,14 +1263,12 @@ msgid "flag date"
msgstr "fecha de la marca"
#: contrib/comments/models.py:268
-#, fuzzy
msgid "user flag"
-msgstr "Marca de usuario"
+msgstr "marca de usuario"
#: contrib/comments/models.py:269
-#, fuzzy
msgid "user flags"
-msgstr "Marcas de usuario"
+msgstr "marcas de usuario"
#: contrib/comments/models.py:273
#, python-format
@@ -197,38 +1280,92 @@ msgid "deletion date"
msgstr "fecha de eliminacin"
#: contrib/comments/models.py:280
-#, fuzzy
msgid "moderator deletion"
-msgstr "Eliminacin de moderador"
+msgstr "eliminacin de moderador"
#: contrib/comments/models.py:281
-#, fuzzy
msgid "moderator deletions"
-msgstr "Eliminaciones de moderador"
+msgstr "eliminaciones de moderador"
#: contrib/comments/models.py:285
#, python-format
msgid "Moderator deletion by %r"
msgstr "Eliminacin del moderador %r"
-#: contrib/comments/views/karma.py:19
-msgid "Anonymous users cannot vote"
-msgstr "Los usuarios annimos no pueden votar"
+#: contrib/comments/templates/comments/freeform.html:4
+msgid "Your name:"
+msgstr "Tu nombre:"
-#: contrib/comments/views/karma.py:23
-msgid "Invalid comment ID"
-msgstr "ID de comentario no vlido"
+#: contrib/comments/templates/comments/freeform.html:5
+#: contrib/comments/templates/comments/form.html:28
+msgid "Comment:"
+msgstr "Comentario:"
-#: contrib/comments/views/karma.py:25
-msgid "No voting for yourself"
-msgstr "No puedes votarte t mismo"
+#: contrib/comments/templates/comments/freeform.html:10
+#: contrib/comments/templates/comments/form.html:35
+msgid "Preview comment"
+msgstr "Previsualizar comentario"
-#: contrib/comments/views/comments.py:28
-msgid ""
-"This rating is required because you've entered at least one other rating."
+#: contrib/comments/templates/comments/form.html:6
+#: contrib/comments/templates/comments/form.html:8
+#: contrib/admin/templates/admin/login.html:17
+msgid "Username:"
+msgstr "Usuario:"
+
+#: contrib/comments/templates/comments/form.html:6
+#: contrib/admin/templates/admin_doc/model_index.html:5
+#: contrib/admin/templates/admin_doc/model_detail.html:3
+#: contrib/admin/templates/admin_doc/view_detail.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/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_detail.html:4
+#: contrib/admin/templates/admin/object_history.html:3
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/change_list.html:5
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/change_form.html:10
+#: 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 "Terminar sesin"
+
+#: contrib/comments/templates/comments/form.html:8
+#: contrib/admin/templates/admin/login.html:20
+msgid "Password:"
+msgstr "Clave:"
+
+#: contrib/comments/templates/comments/form.html:8
+msgid "Forgotten your password?"
+msgstr "Has olvidado tu contrasea?"
+
+#: contrib/comments/templates/comments/form.html:12
+msgid "Ratings"
+msgstr "Calificaciones"
+
+#: contrib/comments/templates/comments/form.html:12
+#: contrib/comments/templates/comments/form.html:23
+msgid "Required"
+msgstr "Requerido"
+
+#: contrib/comments/templates/comments/form.html:12
+#: contrib/comments/templates/comments/form.html:23
+msgid "Optional"
+msgstr "Opcional"
+
+#: contrib/comments/templates/comments/form.html:23
+msgid "Post a photo"
+msgstr "Postea una fotografa"
+
+#: contrib/comments/views/comments.py:27
+msgid "This rating is required because you've entered at least one other rating."
msgstr "Se precisa esta puntuacin porque ha introducido al menos otra ms."
-#: 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 "
@@ -251,32 +1388,35 @@ msgstr[1] ""
"\n"
"%(text)s"
-#: contrib/comments/views/comments.py:117
+#: contrib/comments/views/comments.py:116
#, python-format
msgid ""
"This comment was posted by a sketchy user:\n"
"\n"
"%(text)s"
msgstr ""
+"Este comentario ha sido colocado por un usuario poco preciso: \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 "Slo se admite 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 "No se proporcion uno o ms de los siguientes campos requeridos"
-#: 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 ""
"Alguien est jugando con el formulario de comentarios (violacin de "
"seguridad)"
-#: 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 "
@@ -290,78 +1430,65 @@ msgstr ""
msgid "The comment form didn't provide either 'preview' or 'post'"
msgstr "El formulario de comentario no proporcion 'previsualizar' ni 'enviar'"
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:17
-msgid "Username:"
-msgstr "Usuario:"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
-msgstr "Clave:"
+#: contrib/comments/views/karma.py:19
+msgid "Anonymous users cannot vote"
+msgstr "Los usuarios annimos no pueden votar"
-#: contrib/comments/templates/comments/form.html:6
-#, fuzzy
-msgid "Forgotten your password?"
-msgstr "Cambiar mi clave"
+#: contrib/comments/views/karma.py:23
+msgid "Invalid comment ID"
+msgstr "ID de comentario no vlido"
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/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 "Terminar sesin"
+#: contrib/comments/views/karma.py:25
+msgid "No voting for yourself"
+msgstr "No puedes votarte t mismo"
-#: contrib/comments/templates/comments/form.html:12
-#, fuzzy
-msgid "Ratings"
-msgstr "calificacin 1"
+#: contrib/redirects/models.py:7
+msgid "redirect from"
+msgstr "redirigir desde"
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
+#: contrib/redirects/models.py:8
+msgid ""
+"This should be an absolute path, excluding the domain name. Example: '/"
+"events/search/'."
msgstr ""
+"Esta ruta debera ser absoluta, excluyendo el nombre de dominio. Ejeplo: '/"
+"events/search/'."
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr ""
+#: contrib/redirects/models.py:9
+msgid "redirect to"
+msgstr "redirigir a"
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
+#: contrib/redirects/models.py:10
+msgid ""
+"This can be either an absolute path (as above) or a full URL starting with "
+"'http://'."
msgstr ""
+"Esto puede ser bien una ruta absoluta (como antes) o una URL completa que "
+"empiece con 'http://'."
-#: contrib/comments/templates/comments/form.html:27
-#: contrib/comments/templates/comments/freeform.html:5
-#, fuzzy
-msgid "Comment:"
-msgstr "Comentario"
+#: contrib/redirects/models.py:13
+msgid "redirect"
+msgstr "redireccin"
-#: contrib/comments/templates/comments/form.html:32
-#: contrib/comments/templates/comments/freeform.html:9
-#, fuzzy
-msgid "Preview comment"
-msgstr "Comentario libre"
+#: contrib/redirects/models.py:14
+msgid "redirects"
+msgstr "redirecciones"
-#: contrib/comments/templates/comments/freeform.html:4
-#, fuzzy
-msgid "Your name:"
-msgstr "nombre de usuario"
+#: contrib/sites/models.py:10
+msgid "domain name"
+msgstr "nombre de dominio"
+
+#: contrib/sites/models.py:11
+msgid "display name"
+msgstr "nombre para mostrar"
+
+#: contrib/sites/models.py:15
+msgid "site"
+msgstr "sitio"
+
+#: contrib/sites/models.py:16
+msgid "sites"
+msgstr "sitios"
#: contrib/admin/filterspecs.py:40
#, python-format
@@ -373,7 +1500,7 @@ msgstr ""
"<ul>\n"
#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143
+#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169
msgid "All"
msgstr "Todo"
@@ -397,18 +1524,6 @@ msgstr "Este mes"
msgid "This year"
msgstr "Este ao"
-#: contrib/admin/filterspecs.py:143
-msgid "Yes"
-msgstr "S"
-
-#: contrib/admin/filterspecs.py:143
-msgid "No"
-msgstr "No"
-
-#: contrib/admin/filterspecs.py:150
-msgid "Unknown"
-msgstr "Desconocido"
-
#: contrib/admin/models.py:16
msgid "action time"
msgstr "hora de accin"
@@ -437,266 +1552,181 @@ msgstr "entrada de registro"
msgid "log entries"
msgstr "entradas de registro"
-#: contrib/admin/templatetags/admin_list.py:228
-msgid "All dates"
-msgstr "Todas las fechas"
-
-#: contrib/admin/views/decorators.py:9 contrib/auth/forms.py:36
-#: contrib/auth/forms.py:41
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-
-#: contrib/admin/views/decorators.py:23
-#: contrib/admin/templates/admin/login.html:25
-msgid "Log in"
-msgstr "Identificarse"
-
-#: 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 ""
-"Por favor, identifquese de nuevo, porque su sesin ha caducado. No se "
-"preocupe: se ha guardado su envo."
-
-#: 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 ""
-"Parece que su navegador no est configurado para aceptar cookies. Actvelas "
-"por favor, recargue esta pgina, e intntelo de nuevo."
-
-#: contrib/admin/views/decorators.py:82
-msgid "Usernames cannot contain the '@' character."
-msgstr "Los nombres de usuario no pueden contener el carcter '@'."
+#: contrib/admin/templates/widget/file.html:2
+msgid "Currently:"
+msgstr "Actualmente:"
-#: contrib/admin/views/decorators.py:84
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr ""
-"Su direccin de correo no es su nombre de usuario. Pruebe con '%s' en su "
-"lugar."
+#: contrib/admin/templates/widget/file.html:3
+msgid "Change:"
+msgstr "Modificar:"
-#: contrib/admin/views/main.py:226
-msgid "Site administration"
-msgstr "Sitio administrativo"
+#: contrib/admin/templates/widget/date_time.html:3
+msgid "Date:"
+msgstr "Fecha:"
-#: contrib/admin/views/main.py:260
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Se aadi con xito el %(name)s \"%(obj)s\"."
+#: contrib/admin/templates/widget/date_time.html:4
+msgid "Time:"
+msgstr "Hora:"
-#: contrib/admin/views/main.py:264 contrib/admin/views/main.py:348
-msgid "You may edit it again below."
-msgstr "Puede editarlo de nuevo abajo."
+#: contrib/admin/templates/admin_doc/model_index.html:5
+#: contrib/admin/templates/admin_doc/model_detail.html:3
+#: contrib/admin/templates/admin_doc/view_detail.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/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_detail.html:4
+#: contrib/admin/templates/admin/object_history.html:3
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/change_list.html:5
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/change_form.html:10
+#: 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 "Cambiar clave"
-#: contrib/admin/views/main.py:272 contrib/admin/views/main.py:357
-#, python-format
-msgid "You may add another %s below."
-msgstr "Puede agregar otro %s abajo."
+#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+#: contrib/admin/templates/admin/500.html:4
+#: contrib/admin/templates/admin/object_history.html:5
+#: contrib/admin/templates/admin/base.html:30
+#: contrib/admin/templates/admin/change_list.html:6
+#: contrib/admin/templates/admin/delete_confirmation.html:6
+#: contrib/admin/templates/admin/change_form.html:13
+#: contrib/admin/templates/admin/invalid_setup.html:4
+#: contrib/admin/templates/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_change_form.html:4
+#: contrib/admin/templates/registration/password_change_done.html:4
+msgid "Home"
+msgstr "Inicio"
-#: contrib/admin/views/main.py:290
-#, python-format
-msgid "Add %s"
-msgstr "Agregar %s"
+#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+#: contrib/admin/templates/admin/object_history.html:3
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/change_list.html:5
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/change_form.html:10
+#: 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 "Documentacin"
-#: contrib/admin/views/main.py:336
-#, python-format
-msgid "Added %s."
-msgstr "Agregado %s."
+#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+msgid "Bookmarklets"
+msgstr "Bookmarklets"
-#: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338
-#: contrib/admin/views/main.py:340
-msgid "and"
-msgstr "y"
+#: contrib/admin/templates/admin_doc/bookmarklets.html:5
+msgid "Documentation bookmarklets"
+msgstr "Bookmarklets de documentacin"
-#: contrib/admin/views/main.py:338
-#, python-format
-msgid "Changed %s."
-msgstr "Modificado %s."
+#: contrib/admin/templates/admin_doc/bookmarklets.html:9
+msgid ""
+"\n"
+"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
+"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
+"select the bookmarklet from any page in the site. Note that some of these\n"
+"bookmarklets require you to be viewing the site from a computer designated\n"
+"as \"internal\" (talk to your system administrator if you aren't sure if\n"
+"your computer is \"internal\").</p>\n"
+msgstr ""
+"\n"
+"<p class=\"help\">Para instalar bookmarklets, arrastre el enlace a su barra\n"
+"de favoritos, o pulse con el botn derecho el enlace y adalo a sus "
+"favoritos.\n"
+"Ahora puede escoger el bookmarklet desde cualquier pgina en el sitio.\n"
+"Observer que algunos de estos bookmarklets precisan que est viendo\n"
+"el sitio desde un computador sealado como \"interno\" (hable\n"
+"con su administrador de sistemas si no est seguro de si el suyo lo es).</"
+"p>\n"
-#: contrib/admin/views/main.py:340
-#, python-format
-msgid "Deleted %s."
-msgstr "Borrado %s."
+#: contrib/admin/templates/admin_doc/bookmarklets.html:19
+msgid "Documentation for this page"
+msgstr "Documentacin de esta pgina"
-#: contrib/admin/views/main.py:343
-msgid "No fields changed."
-msgstr "No ha cambiado ningn campo."
+#: 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 "Le lleva desde cualquier pgina a la documentacin de la vista que la genera."
-#: contrib/admin/views/main.py:346
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Se modific con xito el %(name)s \"%(obj)s."
+#: contrib/admin/templates/admin_doc/bookmarklets.html:22
+msgid "Show object ID"
+msgstr "Mostrar ID de objeto"
-#: contrib/admin/views/main.py:354
-#, python-format
+#: contrib/admin/templates/admin_doc/bookmarklets.html:23
msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
+"Shows the content-type and unique ID for pages that represent a single "
+"object."
msgstr ""
-"Se agreg con xito el %(name)s \"%(obj)s. Puede editarlo de nuevo abajo."
-
-#: contrib/admin/views/main.py:392
-#, python-format
-msgid "Change %s"
-msgstr "Modificar %s"
+"Muestra el tipo de contenido e ID unvoco de las pginas que representan un "
+"nico objeto."
-#: contrib/admin/views/main.py:470
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Uno o ms %(fieldname)s en %(name)s: %(obj)s"
+#: contrib/admin/templates/admin_doc/bookmarklets.html:25
+msgid "Edit this object (current window)"
+msgstr "Editar este objeto (ventana actual)"
-#: contrib/admin/views/main.py:475
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Uno o ms %(fieldname)s en %(name)s:"
+#: contrib/admin/templates/admin_doc/bookmarklets.html:26
+msgid "Jumps to the admin page for pages that represent a single object."
+msgstr ""
+"Le lleva a la pgina de administracin de pginas que representan un nico "
+"objeto."
-#: contrib/admin/views/main.py:508
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Se elimin con xito el %(name)s \"%(obj)s\"."
+#: contrib/admin/templates/admin_doc/bookmarklets.html:28
+msgid "Edit this object (new window)"
+msgstr "Editar este objeto (nueva ventana)"
-#: contrib/admin/views/main.py:511
-msgid "Are you sure?"
-msgstr "Est seguro?"
+#: contrib/admin/templates/admin_doc/bookmarklets.html:29
+msgid "As above, but opens the admin page in a new window."
+msgstr "Como antes, pero abre la pgina de administracin en una nueva ventana."
-#: contrib/admin/views/main.py:533
-#, python-format
-msgid "Change history: %s"
-msgstr "Modificar histrico: %s"
+#: contrib/admin/templates/admin/500.html:4
+msgid "Server error"
+msgstr "Error del servidor"
-#: contrib/admin/views/main.py:565
-#, python-format
-msgid "Select %s"
-msgstr "Escoja %s"
+#: contrib/admin/templates/admin/500.html:6
+msgid "Server error (500)"
+msgstr "Error del servidor (500)"
-#: contrib/admin/views/main.py:565
-#, python-format
-msgid "Select %s to change"
-msgstr "Escoja %s para modificar"
+#: contrib/admin/templates/admin/500.html:9
+msgid "Server Error <em>(500)</em>"
+msgstr "Error de servidor <em>(500)</em>"
-#: 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 "Entero"
+#: 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 ""
+"Ha ocurrido un error. Se ha informado a los administradores del sitio "
+"mediante correo electrnico y debera arreglarse en breve. Gracias por su "
+"paciencia"
-#: contrib/admin/views/doc.py:278
-msgid "Boolean (Either True or False)"
-msgstr "Booleano (Verdadero o Falso)"
+#: contrib/admin/templates/admin/search_form.html:8
+msgid "Go"
+msgstr "Buscar"
-#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:296
+#: contrib/admin/templates/admin/search_form.html:10
#, python-format
-msgid "String (up to %(maxlength)s)"
-msgstr "Cadena (mximo %(maxlength)s)"
-
-#: contrib/admin/views/doc.py:280
-msgid "Comma-separated integers"
-msgstr "Enteros separados por comas"
-
-#: contrib/admin/views/doc.py:281
-msgid "Date (without time)"
-msgstr "Fecha (sin hora)"
-
-#: contrib/admin/views/doc.py:282
-msgid "Date (with time)"
-msgstr "Fecha (con hora)"
-
-#: contrib/admin/views/doc.py:283
-msgid "E-mail address"
-msgstr "Direccin de correo electrnico"
-
-#: contrib/admin/views/doc.py:284 contrib/admin/views/doc.py:287
-msgid "File path"
-msgstr "Ruta de fichero"
-
-#: contrib/admin/views/doc.py:285
-msgid "Decimal number"
-msgstr "Nmero decimal"
-
-#: contrib/admin/views/doc.py:291
-msgid "Boolean (Either True, False or None)"
-msgstr "Booleano (Verdadero, Falso o Nulo)"
-
-#: contrib/admin/views/doc.py:292
-msgid "Relation to parent model"
-msgstr "Relacin con el modelo padre"
-
-#: contrib/admin/views/doc.py:293
-msgid "Phone number"
-msgstr "Nmero de telfono"
-
-#: contrib/admin/views/doc.py:298
-msgid "Text"
-msgstr "Texto"
-
-#: contrib/admin/views/doc.py:299
-msgid "Time"
-msgstr "Hora"
-
-#: 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 "Estado de los EEUU (dos letras maysculas)"
-
-#: contrib/admin/views/doc.py:302
-msgid "XML text"
-msgstr "Texto 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/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Documentacin"
-
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/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 "Cambiar clave"
+msgid "1 result"
+msgid_plural "%(counter)s results"
+msgstr[0] "1 resultado"
+msgstr[1] "%(counter)s resultados"
-#: 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/change_form.html:13
-#: 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 "Inicio"
+#: contrib/admin/templates/admin/search_form.html:10
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr "%(full_result_count)s total"
#: 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 "Histrico"
@@ -714,7 +1744,7 @@ msgstr "Accin"
#: contrib/admin/templates/admin/object_history.html:26
msgid "DATE_WITH_TIME_FULL"
-msgstr ""
+msgstr "j M Y P"
#: contrib/admin/templates/admin/object_history.html:36
msgid ""
@@ -732,26 +1762,48 @@ msgstr "Sitio de administracin de Django"
msgid "Django administration"
msgstr "Administracin de Django"
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Error del servidor"
+#: contrib/admin/templates/admin/base.html:25
+msgid "Welcome,"
+msgstr "Bienvenido,"
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Error del servidor (500)"
+#: contrib/admin/templates/admin/login.html:25
+#: contrib/admin/views/decorators.py:24
+msgid "Log in"
+msgstr "Identificarse"
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Error de servidor <em>(500)</em>"
+#: contrib/admin/templates/admin/change_list.html:12
+#, python-format
+msgid "Add %(name)s"
+msgstr "Agregar %(name)s"
-#: contrib/admin/templates/admin/500.html:10
+#: contrib/admin/templates/admin/delete_confirmation.html:9
+#: contrib/admin/templates/admin/submit_line.html:3
+msgid "Delete"
+msgstr "Eliminar"
+
+#: contrib/admin/templates/admin/delete_confirmation.html:14
+#, python-format
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."
+"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 ""
-"Ha ocurrido un error. Se ha informado a los administradores del sitio "
-"mediante correo electrnico y debera arreglarse en breve. Gracias por su "
-"paciencia"
+"Eliminar el %(object_name)s '%(escaped_object)s' provocara la eliminacin "
+"de objetos relacionados, pero su cuenta no tiene permiso para borrar los "
+"siguientes tipos de objetos:"
+
+#: 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 ""
+"Est seguro de que quiere borrar los %(object_name)s \"%(escaped_object)s"
+"\"? Se borrarn los siguientes objetos relacionados:"
+
+#: contrib/admin/templates/admin/delete_confirmation.html:26
+msgid "Yes, I'm sure"
+msgstr "S, estoy seguro"
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
@@ -762,10 +1814,35 @@ msgstr "Pgina no encontrada"
msgid "We're sorry, but the requested page could not be found."
msgstr "Lo sentimos, pero no se encuentra la pgina solicitada."
+#: contrib/admin/templates/admin/filters.html:4
+msgid "Filter"
+msgstr "Filtro"
+
+#: contrib/admin/templates/admin/submit_line.html:4
+msgid "Save as new"
+msgstr "Grabar como nuevo"
+
+#: contrib/admin/templates/admin/submit_line.html:5
+msgid "Save and add another"
+msgstr "Grabar y aadir otro"
+
+#: contrib/admin/templates/admin/submit_line.html:6
+msgid "Save and continue editing"
+msgstr "Grabar y continuar editando"
+
+#: contrib/admin/templates/admin/submit_line.html:7
+msgid "Save"
+msgstr "Grabar"
+
#: contrib/admin/templates/admin/index.html:17
#, python-format
msgid "Models available in the %(name)s application."
-msgstr ""
+msgstr "Modelos disponibles en la aplicacin %(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
@@ -792,106 +1869,77 @@ msgstr "Mis acciones"
msgid "None available"
msgstr "Ninguno disponible"
-#: contrib/admin/templates/admin/change_list.html:11
-#, python-format
-msgid "Add %(name)s"
-msgstr "Agregar %(name)s"
-
-#: contrib/admin/templates/admin/login.html:22
-msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-msgstr "Ha <a href=\"/password_reset/\">olvidado su clave</a>?"
+#: contrib/admin/templates/admin/pagination.html:10
+msgid "Show all"
+msgstr "Mostrarlo todo"
-#: contrib/admin/templates/admin/base.html:23
-msgid "Welcome,"
-msgstr "Bienvenido,"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "Eliminar"
-
-#: 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 ""
-"Eliminar el %(object_name)s '%(object)s' provocara la eliminacin de "
-"objetos relacionados, pero su cuenta no tiene permiso para borrar los "
-"siguientes tipos de objetos:"
-
-#: 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 ""
-"Est seguro de que quiere borrar los %(object_name)s \"%(object)s\"? Se "
-"borrarn los siguientes objetos relacionados:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:26
-msgid "Yes, I'm sure"
-msgstr "S, estoy seguro"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(title)s "
-msgstr " Por %(title)s "
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Buscar"
-
-#: contrib/admin/templates/admin/change_form.html:21
+#: contrib/admin/templates/admin/change_form.html:22
msgid "View on site"
msgstr "Ver en el sitio"
-#: 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] "Por favor, corrija el siguiente error."
msgstr[1] "Por favor, corrija los siguientes errores."
-#: contrib/admin/templates/admin/change_form.html:48
+#: contrib/admin/templates/admin/change_form.html:50
msgid "Ordering"
msgstr "Ordenacin"
-#: contrib/admin/templates/admin/change_form.html:51
+#: contrib/admin/templates/admin/change_form.html:53
msgid "Order:"
msgstr "Orden:"
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Grabar como nuevo"
+#: 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 ""
+"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 "
+"usuario apropiado."
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Grabar y aadir otro"
+#: contrib/admin/templates/admin/filter.html:2
+#, python-format
+msgid " By %(filter_title)s "
+msgstr " Por %(filter_title)s "
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Grabar y continuar editando"
+#: 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 ""
+"Primero, introduzca un nombre de usuario y una contrasea. Luego, podr "
+"editar el resto de opciones del usuario."
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Grabar"
+#: contrib/admin/templates/admin/auth/user/add_form.html:12
+msgid "Username"
+msgstr "Nombre de usuario"
-#: 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 de clave"
+#: contrib/admin/templates/admin/auth/user/add_form.html:18
+#: contrib/admin/templates/admin/auth/user/change_password.html:34
+msgid "Password"
+msgstr "Contrasea"
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Cambio de clave exitoso"
+#: contrib/admin/templates/admin/auth/user/add_form.html:23
+#: contrib/admin/templates/admin/auth/user/change_password.html:39
+msgid "Password (again)"
+msgstr "Contrasea (de nuevo)"
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Su clave ha sido cambiada."
+#: 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 "Introduzca la misma contrasea que arriba, para verificacin"
+
+#: contrib/admin/templates/admin/auth/user/change_password.html:28
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr ""
+"Introduzca una nueva contrasea para el usuario <strong>%(username)s</"
+"strong>."
#: contrib/admin/templates/registration/password_reset_form.html:4
#: contrib/admin/templates/registration/password_reset_form.html:6
@@ -924,43 +1972,6 @@ msgstr "Gracias por el tiempo que ha dedicado al sitio web hoy."
msgid "Log in again"
msgstr "Identificarse de nuevo"
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Recuperacin de clave exitosa"
-
-#: 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 ""
-"Le hemos enviado una clave nueva a la direccin que ha suministrado. Debera "
-"recibirla en breve."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Por favor, introduzca su clave antigua, por seguridad, y despus introduzca "
-"la nueva clave dos veces para verificar que la ha escrito correctamente."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Clave antigua:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-msgid "New password:"
-msgstr "Clave nueva:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
-msgstr "Confirme clave:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
-msgstr "Cambiar mi clave"
-
#: contrib/admin/templates/registration/password_reset_email.html:2
msgid "You're receiving this e-mail because you requested a password reset"
msgstr "Est recibiendo este mensaje debido a que solicit recuperar la clave"
@@ -992,1064 +2003,369 @@ msgstr "Gracias por usar nuestro sitio!"
msgid "The %(site_name)s team"
msgstr "El equipo de %(site_name)s"
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Bookmarklets"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:5
-msgid "Documentation bookmarklets"
-msgstr "Bookmarklets de documentacin"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:9
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Para instalar bookmarklets, arrastre el enlace a su barra\n"
-"de favoritos, o pulse con el botn derecho el enlace y adalo a sus "
-"favoritos.\n"
-"Ahora puede escoger el bookmarklet desde cualquier pgina en el sitio.\n"
-"Observer que algunos de estos bookmarklets precisan que est viendo\n"
-"el sitio desde un computador sealado como \"interno\" (hable\n"
-"con su administrador de sistemas si no est seguro de si el suyo lo es).</"
-"p>\n"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Documentation for this page"
-msgstr "Documentacin de esta pgina"
-
-#: 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 ""
-"Le lleva desde cualquier pgina a la documentacin de la vista que la genera."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Show object ID"
-msgstr "Mostrar ID de objeto"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:23
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Muestra el tipo de contenido e ID unvoco de las pginas que representan un "
-"nico objeto."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Edit this object (current window)"
-msgstr "Editar este objeto (ventana actual)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:26
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Le lleva a la pgina de administracin de pginas que representan un nico "
-"objeto."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "Edit this object (new window)"
-msgstr "Editar este objeto (nueva ventana)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:29
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-"Como antes, pero abre la pgina de administracin en una nueva ventana."
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Fecha:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-#, fuzzy
-msgid "Time:"
-msgstr "Hora"
-
-#: contrib/admin/templates/widget/file.html:2
-#, fuzzy
-msgid "Currently:"
-msgstr "Actualmente"
-
-#: contrib/admin/templates/widget/file.html:3
-#, fuzzy
-msgid "Change:"
-msgstr "Modificar"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "redirigir desde"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Esta ruta debera ser absoluta, excluyendo el nombre de dominio. Ejeplo: '/"
-"events/search/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "redirigir a"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Esto puede ser bien una ruta absoluta (como antes) o una URL completa que "
-"empiece con 'http://'."
-
-#: contrib/redirects/models.py:12
-msgid "redirect"
-msgstr "redireccin"
-
-#: contrib/redirects/models.py:13
-msgid "redirects"
-msgstr "redirecciones"
+#: contrib/admin/templates/registration/password_reset_done.html:6
+#: contrib/admin/templates/registration/password_reset_done.html:10
+msgid "Password reset successful"
+msgstr "Recuperacin de clave exitosa"
-#: contrib/flatpages/models.py:8
+#: contrib/admin/templates/registration/password_reset_done.html:12
msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
+"We've e-mailed a new password to the e-mail address you submitted. You "
+"should be receiving it shortly."
msgstr ""
-"Ejemplo: '/about/contact/'. Asegrese de que pone barras al principio y al "
-"final."
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "ttulo"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "contenido"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "admitir comentarios"
+"Le hemos enviado una clave nueva a la direccin que ha suministrado. Debera "
+"recibirla en breve."
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "nombre de plantilla"
+#: 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 de clave"
-#: contrib/flatpages/models.py:13
+#: contrib/admin/templates/registration/password_change_form.html:12
msgid ""
-"Example: 'flatpages/contact_page'. If this isn't provided, the system will "
-"use 'flatpages/default'."
+"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 ""
-"Ejemplo: 'flatpages/contact_page'. Si no lo proporciona, el sistema usar "
-"'flatpages/default'."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "debe estar registrado"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Si est marcado, slo los usuarios registrados podrn ver la pgina."
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "pgina esttica"
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "pginas estticas"
-
-#: contrib/auth/models.py:13 contrib/auth/models.py:26
-msgid "name"
-msgstr "nombre"
-
-#: contrib/auth/models.py:15
-msgid "codename"
-msgstr "nombre en cdigo"
-
-#: contrib/auth/models.py:17
-#, fuzzy
-msgid "permission"
-msgstr "Permiso"
-
-#: contrib/auth/models.py:18 contrib/auth/models.py:27
-#, fuzzy
-msgid "permissions"
-msgstr "Permisos"
-
-#: contrib/auth/models.py:29
-#, fuzzy
-msgid "group"
-msgstr "Grupo"
-
-#: contrib/auth/models.py:30 contrib/auth/models.py:65
-#, fuzzy
-msgid "groups"
-msgstr "Grupos"
-
-#: contrib/auth/models.py:55
-msgid "username"
-msgstr "nombre de usuario"
-
-#: contrib/auth/models.py:56
-msgid "first name"
-msgstr "nombre"
-
-#: contrib/auth/models.py:57
-msgid "last name"
-msgstr "apellidos"
-
-#: contrib/auth/models.py:58
-msgid "e-mail address"
-msgstr "direccin de correo"
-
-#: contrib/auth/models.py:59
-msgid "password"
-msgstr "clave"
+"Por favor, introduzca su clave antigua, por seguridad, y despus introduzca "
+"la nueva clave dos veces para verificar que la ha escrito correctamente."
-#: contrib/auth/models.py:59
-msgid "Use '[algo]$[salt]$[hexdigest]'"
-msgstr "Use '[algo]$[salt]$[hexdigest]'"
+#: contrib/admin/templates/registration/password_change_form.html:17
+msgid "Old password:"
+msgstr "Clave antigua:"
-#: contrib/auth/models.py:60
-msgid "staff status"
-msgstr "es staff"
+#: contrib/admin/templates/registration/password_change_form.html:19
+msgid "New password:"
+msgstr "Clave nueva:"
-#: contrib/auth/models.py:60
-msgid "Designates whether the user can log into this admin site."
-msgstr "Indica si el usuario puede entrar en este sitio de administracin."
+#: contrib/admin/templates/registration/password_change_form.html:21
+msgid "Confirm password:"
+msgstr "Confirme clave:"
-#: contrib/auth/models.py:61
-msgid "active"
-msgstr "activo"
+#: contrib/admin/templates/registration/password_change_form.html:23
+msgid "Change my password"
+msgstr "Cambiar mi clave"
-#: contrib/auth/models.py:62
-msgid "superuser status"
-msgstr "es superusuario"
+#: contrib/admin/templates/registration/password_change_done.html:6
+#: contrib/admin/templates/registration/password_change_done.html:10
+msgid "Password change successful"
+msgstr "Cambio de clave exitoso"
-#: contrib/auth/models.py:63
-msgid "last login"
-msgstr "ltimo registro"
+#: contrib/admin/templates/registration/password_change_done.html:12
+msgid "Your password was changed."
+msgstr "Su clave ha sido cambiada."
-#: contrib/auth/models.py:64
-msgid "date joined"
-msgstr "fecha de creacin"
+#: contrib/admin/templatetags/admin_list.py:238
+msgid "All dates"
+msgstr "Todas las fechas"
-#: contrib/auth/models.py:66
+#: contrib/admin/views/decorators.py:62
msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
+"Please log in again, because your session has expired. Don't worry: Your "
+"submission has been saved."
msgstr ""
-"Adems de los permisos asignados manualmente, este usuario tambin tendr "
-"todos los permisos de los grupos en los que est."
-
-#: contrib/auth/models.py:67
-#, fuzzy
-msgid "user permissions"
-msgstr "Permisos"
-
-#: contrib/auth/models.py:70
-#, fuzzy
-msgid "user"
-msgstr "Usuario"
-
-#: contrib/auth/models.py:71
-#, fuzzy
-msgid "users"
-msgstr "Usuarios"
-
-#: contrib/auth/models.py:76
-msgid "Personal info"
-msgstr "Informacin personal"
-
-#: contrib/auth/models.py:77
-msgid "Permissions"
-msgstr "Permisos"
-
-#: contrib/auth/models.py:78
-msgid "Important dates"
-msgstr "Fechas importantes"
-
-#: contrib/auth/models.py:79
-msgid "Groups"
-msgstr "Grupos"
-
-#: contrib/auth/models.py:219
-#, fuzzy
-msgid "message"
-msgstr "Mensaje"
+"Por favor, identifquese de nuevo, porque su sesin ha caducado. No se "
+"preocupe: se ha guardado su envo."
-#: contrib/auth/forms.py:30
+#: contrib/admin/views/decorators.py:69
msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-
-#: contrib/contenttypes/models.py:25
-#, fuzzy
-msgid "python model class name"
-msgstr "nombre de mdulo python"
-
-#: contrib/contenttypes/models.py:28
-msgid "content type"
-msgstr "tipo de contenido"
-
-#: contrib/contenttypes/models.py:29
-msgid "content types"
-msgstr "tipos de contenido"
-
-#: contrib/sessions/models.py:35
-msgid "session key"
-msgstr "clave de sesin"
-
-#: contrib/sessions/models.py:36
-msgid "session data"
-msgstr "datos de sesin"
-
-#: contrib/sessions/models.py:37
-msgid "expire date"
-msgstr "fecha de caducidad"
-
-#: contrib/sessions/models.py:41
-msgid "session"
-msgstr "sesin"
-
-#: contrib/sessions/models.py:42
-msgid "sessions"
-msgstr "sesiones"
-
-#: contrib/sites/models.py:10
-msgid "domain name"
-msgstr "nombre de dominio"
-
-#: contrib/sites/models.py:11
-msgid "display name"
-msgstr "nombre para mostrar"
-
-#: contrib/sites/models.py:15
-msgid "site"
-msgstr "sitio"
-
-#: contrib/sites/models.py:16
-msgid "sites"
-msgstr "sitios"
-
-#: utils/translation.py:360
-msgid "DATE_FORMAT"
-msgstr ""
-
-#: utils/translation.py:361
-msgid "DATETIME_FORMAT"
-msgstr ""
-
-#: utils/translation.py:362
-msgid "TIME_FORMAT"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Lunes"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Martes"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Mircoles"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Jueves"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Viernes"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Sbado"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Domingo"
-
-#: utils/dates.py:14
-msgid "January"
-msgstr "Enero"
-
-#: utils/dates.py:14
-msgid "February"
-msgstr "Febrero"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "March"
-msgstr "Marzo"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "April"
-msgstr "Abril"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "May"
-msgstr "Mayo"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "June"
-msgstr "Junio"
-
-#: utils/dates.py:15 utils/dates.py:27
-msgid "July"
-msgstr "Julio"
-
-#: utils/dates.py:15
-msgid "August"
-msgstr "Agosto"
-
-#: utils/dates.py:15
-msgid "September"
-msgstr "Septiembre"
-
-#: utils/dates.py:15
-msgid "October"
-msgstr "Octubre"
-
-#: utils/dates.py:15
-msgid "November"
-msgstr "Noviembre"
-
-#: utils/dates.py:16
-msgid "December"
-msgstr "Diciembre"
-
-#: utils/dates.py:19
-#, fuzzy
-msgid "jan"
-msgstr "y"
-
-#: 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
-#, fuzzy
-msgid "may"
-msgstr "da"
-
-#: utils/dates.py:19
-msgid "jun"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "jul"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "aug"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "sep"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "oct"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "nov"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "dec"
-msgstr ""
-
-#: utils/dates.py:27
-msgid "Jan."
-msgstr "Ene."
-
-#: utils/dates.py:27
-msgid "Feb."
-msgstr "Feb."
-
-#: utils/dates.py:28
-msgid "Aug."
-msgstr "Ago."
-
-#: utils/dates.py:28
-msgid "Sept."
-msgstr "Sept."
-
-#: utils/dates.py:28
-msgid "Oct."
-msgstr "Oct."
-
-#: utils/dates.py:28
-msgid "Nov."
-msgstr "Nov."
-
-#: utils/dates.py:28
-msgid "Dec."
-msgstr "Dic."
-
-#: utils/timesince.py:12
-msgid "year"
-msgid_plural "years"
-msgstr[0] "ao"
-msgstr[1] "aos"
-
-#: utils/timesince.py:13
-msgid "month"
-msgid_plural "months"
-msgstr[0] "mes"
-msgstr[1] "meses"
-
-#: utils/timesince.py:14
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:15
-msgid "day"
-msgid_plural "days"
-msgstr[0] "da"
-msgstr[1] "das"
-
-#: utils/timesince.py:16
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "hora"
-msgstr[1] "horas"
-
-#: utils/timesince.py:17
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "minuto"
-msgstr[1] "minutos"
-
-#: conf/global_settings.py:37
-msgid "Bengali"
-msgstr "Bengal"
-
-#: conf/global_settings.py:38
-msgid "Czech"
-msgstr "Checo"
-
-#: conf/global_settings.py:39
-msgid "Welsh"
-msgstr "Gals"
-
-#: conf/global_settings.py:40
-msgid "Danish"
-msgstr "Dans"
-
-#: conf/global_settings.py:41
-msgid "German"
-msgstr "Alemn"
-
-#: conf/global_settings.py:42
-msgid "Greek"
-msgstr ""
-
-#: conf/global_settings.py:43
-msgid "English"
-msgstr "Ingls"
-
-#: conf/global_settings.py:44
-msgid "Spanish"
-msgstr "Espaol"
-
-#: conf/global_settings.py:45
-msgid "French"
-msgstr "Francs"
-
-#: conf/global_settings.py:46
-msgid "Galician"
-msgstr "Gallego"
-
-#: conf/global_settings.py:47
-msgid "Hungarian"
-msgstr ""
-
-#: conf/global_settings.py:48
-msgid "Hebrew"
+"Looks like your browser isn't configured to accept cookies. Please enable "
+"cookies, reload this page, and try again."
msgstr ""
+"Parece que su navegador no est configurado para aceptar cookies. Actvelas "
+"por favor, recargue esta pgina, e intntelo de nuevo."
-#: conf/global_settings.py:49
-msgid "Icelandic"
-msgstr "Islands"
-
-#: conf/global_settings.py:50
-msgid "Italian"
-msgstr "Italiano"
-
-#: conf/global_settings.py:51
-msgid "Japanese"
-msgstr ""
+#: contrib/admin/views/decorators.py:83
+msgid "Usernames cannot contain the '@' character."
+msgstr "Los nombres de usuario no pueden contener el carcter '@'."
-#: conf/global_settings.py:52
-msgid "Dutch"
+#: contrib/admin/views/decorators.py:85
+#, python-format
+msgid "Your e-mail address is not your username. Try '%s' instead."
msgstr ""
+"Su direccin de correo no es su nombre de usuario. Pruebe con '%s' en su "
+"lugar."
-#: conf/global_settings.py:53
-msgid "Norwegian"
-msgstr "Noruego"
-
-#: conf/global_settings.py:54
-msgid "Brazilian"
-msgstr "Brasileo"
-
-#: conf/global_settings.py:55
-msgid "Romanian"
-msgstr "Rumano"
-
-#: conf/global_settings.py:56
-msgid "Russian"
-msgstr "Ruso"
-
-#: conf/global_settings.py:57
-msgid "Slovak"
-msgstr "Eslovaco"
-
-#: conf/global_settings.py:58
-#, fuzzy
-msgid "Slovenian"
-msgstr "Eslovaco"
-
-#: conf/global_settings.py:59
-msgid "Serbian"
-msgstr "Serbio"
+#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48
+#: contrib/admin/views/doc.py:50
+msgid "tag:"
+msgstr "etiqueta:"
-#: conf/global_settings.py:60
-msgid "Swedish"
-msgstr "Sueco"
+#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79
+#: contrib/admin/views/doc.py:81
+msgid "filter:"
+msgstr "filtro:"
-#: conf/global_settings.py:61
-#, fuzzy
-msgid "Ukrainian"
-msgstr "Brasileo"
+#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137
+#: contrib/admin/views/doc.py:139
+msgid "view:"
+msgstr "vista:"
-#: conf/global_settings.py:62
-msgid "Simplified Chinese"
-msgstr "Chino simplificado"
+#: contrib/admin/views/doc.py:164
+#, python-format
+msgid "App %r not found"
+msgstr "Applicacin %r no encontrada"
-#: conf/global_settings.py:63
-msgid "Traditional Chinese"
-msgstr ""
+#: contrib/admin/views/doc.py:171
+#, python-format
+msgid "Model %(model_name)r not found in app %(app_label)r"
+msgstr "El modelo %(model_name)s no se ha encontrado en la aplicacin %(app_label)r"
-#: core/validators.py:60
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Este valor debe contener slo letras, nmeros y guiones bajos."
+#: contrib/admin/views/doc.py:184
+#, python-format
+msgid "the related `%(app_label)s.%(data_type)s` object"
+msgstr "el objeto relacionado`%(app_label)s.%(data_type)s` "
-#: core/validators.py:64
-#, fuzzy
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"Este valor debe contener slo letras, nmeros, guiones bajos y barras (/)."
+#: contrib/admin/views/doc.py:185 contrib/admin/views/doc.py:207
+#: contrib/admin/views/doc.py:222 contrib/admin/views/doc.py:227
+msgid "model:"
+msgstr "modelo:"
-#: core/validators.py:72
-msgid "Uppercase letters are not allowed here."
-msgstr "No se admiten letras maysculas."
+#: contrib/admin/views/doc.py:216
+#, python-format
+msgid "related `%(app_label)s.%(object_name)s` objects"
+msgstr "los objetos relacionados `%(app_label)s.%(object_name)s`"
-#: core/validators.py:76
-msgid "Lowercase letters are not allowed here."
-msgstr "No se admiten letras minsculas."
+#: contrib/admin/views/doc.py:222
+#, python-format
+msgid "all %s"
+msgstr "todo %s"
-#: core/validators.py:83
-msgid "Enter only digits separated by commas."
-msgstr "Introduzca slo dgitos separados por comas."
+#: contrib/admin/views/doc.py:227
+#, python-format
+msgid "number of %s"
+msgstr "nmero de %s"
-#: core/validators.py:95
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Introduzca direcciones de correo vlidas separadas por comas."
+#: contrib/admin/views/doc.py:232
+#, python-format
+msgid "Fields on %s objects"
+msgstr "Campos en %s objetos"
-#: core/validators.py:99
-msgid "Please enter a valid IP address."
-msgstr "Por favor introduzca una direccin IP vlida."
+#: contrib/admin/views/doc.py:294 contrib/admin/views/doc.py:304
+#: contrib/admin/views/doc.py:306 contrib/admin/views/doc.py:312
+#: contrib/admin/views/doc.py:313 contrib/admin/views/doc.py:315
+msgid "Integer"
+msgstr "Entero"
-#: core/validators.py:103
-msgid "Empty values are not allowed here."
-msgstr "No se admiten valores vacos."
+#: contrib/admin/views/doc.py:295
+msgid "Boolean (Either True or False)"
+msgstr "Booleano (Verdadero o Falso)"
-#: core/validators.py:107
-msgid "Non-numeric characters aren't allowed here."
-msgstr "No se admiten caracteres no numricos."
+#: contrib/admin/views/doc.py:296 contrib/admin/views/doc.py:314
+#, python-format
+msgid "String (up to %(maxlength)s)"
+msgstr "Cadena (mximo %(maxlength)s)"
-#: core/validators.py:111
-msgid "This value can't be comprised solely of digits."
-msgstr "Este valor no puede comprender slo dgitos."
+#: contrib/admin/views/doc.py:297
+msgid "Comma-separated integers"
+msgstr "Enteros separados por comas"
-#: core/validators.py:116
-msgid "Enter a whole number."
-msgstr "Introduzca un nmero entero."
+#: contrib/admin/views/doc.py:298
+msgid "Date (without time)"
+msgstr "Fecha (sin hora)"
-#: core/validators.py:120
-msgid "Only alphabetical characters are allowed here."
-msgstr "Slo se admiten caracteres alfabticos."
+#: contrib/admin/views/doc.py:299
+msgid "Date (with time)"
+msgstr "Fecha (con hora)"
-#: core/validators.py:124
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Introduzca una fecha vlida en formato AAAA-MM-DD."
+#: contrib/admin/views/doc.py:300
+msgid "E-mail address"
+msgstr "Direccin de correo electrnico"
-#: core/validators.py:128
-msgid "Enter a valid time in HH:MM format."
-msgstr "Introduzca una hora vlida en formato HH:MM."
+#: contrib/admin/views/doc.py:301 contrib/admin/views/doc.py:302
+#: contrib/admin/views/doc.py:305
+msgid "File path"
+msgstr "Ruta de fichero"
-#: core/validators.py:132 db/models/fields/__init__.py:468
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Introduzca una fecha/hora vlida en formato YYYY-MM-DD HH:MM."
+#: contrib/admin/views/doc.py:303
+msgid "Decimal number"
+msgstr "Nmero decimal"
-#: core/validators.py:136
-msgid "Enter a valid e-mail address."
-msgstr "Introduzca una direccin de correo electrnico vlida"
+#: contrib/admin/views/doc.py:309
+msgid "Boolean (Either True, False or None)"
+msgstr "Booleano (Verdadero, Falso o Nulo)"
-#: core/validators.py:148
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Enve una imagen vlida. El fichero que ha enviado no era una imagen o se "
-"trataba de una imagen corrupta."
+#: contrib/admin/views/doc.py:310
+msgid "Relation to parent model"
+msgstr "Relacin con el modelo padre"
-#: core/validators.py:155
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "La URL %s no apunta a una imagen vlida."
+#: contrib/admin/views/doc.py:311
+msgid "Phone number"
+msgstr "Nmero de telfono"
-#: core/validators.py:159
-#, 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\" "
-"no es vlido."
+#: contrib/admin/views/doc.py:316
+msgid "Text"
+msgstr "Texto"
-#: core/validators.py:167
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "La URL %s no apunta a un vdeo QuickTime vlido."
+#: contrib/admin/views/doc.py:317
+msgid "Time"
+msgstr "Hora"
-#: core/validators.py:171
-msgid "A valid URL is required."
-msgstr "Se precisa una URL vlida."
+#: contrib/admin/views/doc.py:319
+msgid "U.S. state (two uppercase letters)"
+msgstr "Estado de los EEUU (dos letras maysculas)"
-#: core/validators.py:185
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"Se precisa HTML vlido. Los errores especficos son:\n"
-"%s"
+#: contrib/admin/views/doc.py:320
+msgid "XML text"
+msgstr "Texto XML"
-#: core/validators.py:192
+#: contrib/admin/views/doc.py:346
#, python-format
-msgid "Badly formed XML: %s"
-msgstr "XML mal formado: %s"
+msgid "%s does not appear to be a urlpattern object"
+msgstr "%s no parece ser un objeto urlpattern"
-#: core/validators.py:202
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "URL no vlida: %s"
+#: contrib/admin/views/main.py:223
+msgid "Site administration"
+msgstr "Sitio administrativo"
-#: core/validators.py:206 core/validators.py:208
+#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:19
#, python-format
-msgid "The URL %s is a broken link."
-msgstr "La URL %s es un enlace roto."
+msgid "The %(name)s \"%(obj)s\" was added successfully."
+msgstr "Se aadi con xito el %(name)s \"%(obj)s\"."
-#: core/validators.py:214
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Introduzca una abreviatura vlida de estado de los EEUU."
+#: 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 "Puede editarlo de nuevo abajo."
-#: core/validators.py:229
+#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356
#, 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] "Vigila tu boca! Aqu no admitimos la palabra %s."
-msgstr[1] "Vigila tu boca! Aqu no admitimos las palabras %s."
+msgid "You may add another %s below."
+msgstr "Puede agregar otro %s abajo."
-#: core/validators.py:236
+#: contrib/admin/views/main.py:289
#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Este campo debe concordar con el campo '%s'."
-
-#: core/validators.py:255
-msgid "Please enter something for at least one field."
-msgstr "Por favor, introduzca algo en al menos un campo."
-
-#: core/validators.py:264 core/validators.py:275
-msgid "Please enter both fields or leave them both empty."
-msgstr "Por favor, rellene ambos campos o deje ambos vacos."
+msgid "Add %s"
+msgstr "Agregar %s"
-#: core/validators.py:282
+#: contrib/admin/views/main.py:335
#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Se debe proporcionar este campo si %(field)s es %(value)s"
+msgid "Added %s."
+msgstr "Agregado %s."
-#: core/validators.py:294
+#: contrib/admin/views/main.py:337
#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Se debe proporcionar este campo si %(field)s no es %(value)s"
-
-#: core/validators.py:313
-msgid "Duplicate values are not allowed."
-msgstr "No se admiten valores duplicados."
+msgid "Changed %s."
+msgstr "Modificado %s."
-#: core/validators.py:336
+#: contrib/admin/views/main.py:339
#, python-format
-msgid "This value must be a power of %s."
-msgstr "Este valor debe ser una potencia de %s."
+msgid "Deleted %s."
+msgstr "Borrado %s."
-#: core/validators.py:347
-msgid "Please enter a valid decimal number."
-msgstr "Por favor, introduzca un nmero decimal vlido."
+#: contrib/admin/views/main.py:342
+msgid "No fields changed."
+msgstr "No ha cambiado ningn campo."
-#: core/validators.py:349
+#: contrib/admin/views/main.py:345
#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s total digits."
-msgstr[0] ""
-"Por favor, introduzca un nmero decimal vlido con a lo ms %s dgito en "
-"total."
-msgstr[1] ""
-"Por favor, introduzca un nmero decimal vlido con a lo ms %s dgitos en "
-"total."
+msgid "The %(name)s \"%(obj)s\" was changed successfully."
+msgstr "Se modific con xito el %(name)s \"%(obj)s."
-#: core/validators.py:352
+#: contrib/admin/views/main.py:353
#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] ""
-"Por favor, introduzca un nmero decimal vlido con a lo ms %s dgito "
-"decimal."
-msgstr[1] ""
-"Por favor, introduzca un nmero decimal vlido con a lo ms %s dgitos "
-"decimales."
+msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
+msgstr "Se agreg con xito el %(name)s \"%(obj)s. Puede editarlo de nuevo abajo."
-#: core/validators.py:362
+#: contrib/admin/views/main.py:391
#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Asegrese de que el fichero que enva tiene al menos %s bytes."
+msgid "Change %s"
+msgstr "Modificar %s"
-#: core/validators.py:363
+#: contrib/admin/views/main.py:473
#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Asegrese de que el fichero que enva tiene como mximo %s bytes."
-
-#: core/validators.py:376
-msgid "The format for this field is wrong."
-msgstr "El formato de este campo es incorrecto."
-
-#: core/validators.py:391
-msgid "This field is invalid."
-msgstr "Este campo no es vlido."
+msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
+msgstr "Uno o ms %(fieldname)s en %(name)s: %(obj)s"
-#: core/validators.py:426
+#: contrib/admin/views/main.py:478
#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "No pude obtener nada de %s."
+msgid "One or more %(fieldname)s in %(name)s:"
+msgstr "Uno o ms %(fieldname)s en %(name)s:"
-#: core/validators.py:429
+#: contrib/admin/views/main.py:511
#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-"La URL %(url)s devolvi la cabecera Content-Type '%(contenttype)s', que no "
-"es vlida."
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr "Se elimin con xito el %(name)s \"%(obj)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 ""
-"Por favor, cierre la etiqueta %(tag)s de la lnea %(line)s. (La lnea "
-"empieza por \"%(start)s\".)"
+#: contrib/admin/views/main.py:514
+msgid "Are you sure?"
+msgstr "Est seguro?"
-#: core/validators.py:466
+#: contrib/admin/views/main.py:536
#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Parte del texto que comienza en la lnea %(line)s no est permitido en ese "
-"contexto. (La lnea empieza por \"%(start)s\".)"
+msgid "Change history: %s"
+msgstr "Modificar histrico: %s"
-#: core/validators.py:471
+#: contrib/admin/views/main.py:570
#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"El \"%(attr)s\" de la lnea %(line)s no es un atributo vlido. (La lnea "
-"empieza por \"%(start)s\".)"
+msgid "Select %s"
+msgstr "Escoja %s"
-#: core/validators.py:476
+#: contrib/admin/views/main.py:570
#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"La \"<%(tag)s>\" de la lnea %(line)s no es una etiqueta vlida. (La lnea "
-"empieza por \"%(start)s\".)"
+msgid "Select %s to change"
+msgstr "Escoja %s para modificar"
-#: 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 ""
-"A una etiqueta de la lnea %(line)s le faltan uno o ms atributos "
-"requeridos. (La lnea empieza por \"%(start)s\".)"
+#: contrib/admin/views/main.py:758
+msgid "Database error"
+msgstr "Erorr en la base de datos"
-#: 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 ""
-"El atributo \"%(attr)s\" de la lnea %(line)s tiene un valor que no es "
-"vlido. (La lnea empieza por \"%(start)s\".)"
+#: contrib/admin/views/auth.py:30
+msgid "Add user"
+msgstr "Aadir usuario"
-#: db/models/manipulators.py:302
-#, fuzzy, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "Ya existe %(optname)s con este %(fieldname)s."
+#: contrib/admin/views/auth.py:57
+msgid "Password changed successfully."
+msgstr "La clave se ha cambiado exitosamente."
-#: db/models/fields/__init__.py:40
+#: contrib/admin/views/auth.py:64
#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "Ya existe %(optname)s con este %(fieldname)s."
+msgid "Change password: %s"
+msgstr "Cambiar clave: %s"
-#: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265
-#: db/models/fields/__init__.py:542 db/models/fields/__init__.py:553
-#: forms/__init__.py:346
-msgid "This field is required."
-msgstr "Este campo es obligatorio."
+#: 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."
-#: db/models/fields/__init__.py:337
-#, fuzzy
-msgid "This value must be an integer."
-msgstr "Este valor debe ser una potencia de %s."
-
-#: db/models/fields/__init__.py:369
-#, fuzzy
-msgid "This value must be either True or False."
-msgstr "Este valor debe ser una potencia de %s."
+#: 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 "
+"cdigo."
-#: db/models/fields/__init__.py:385
-#, fuzzy
-msgid "This field cannot be null."
-msgstr "Este campo no es vlido."
+#: contrib/sessions/models.py:51
+msgid "session key"
+msgstr "clave de sesin"
-#: db/models/fields/__init__.py:562
-msgid "Enter a valid filename."
-msgstr "Introduzca un nombre de fichero vlido"
+#: contrib/sessions/models.py:52
+msgid "session data"
+msgstr "datos de sesin"
-#: db/models/fields/related.py:43
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Por favor, introduzca un %s vlido."
+#: contrib/sessions/models.py:53
+msgid "expire date"
+msgstr "fecha de caducidad"
-#: db/models/fields/related.py:579
-#, fuzzy
-msgid "Separate multiple IDs with commas."
-msgstr " Separe mltiples IDs con comas."
+#: contrib/sessions/models.py:57
+msgid "session"
+msgstr "sesin"
-#: db/models/fields/related.py:581
-#, fuzzy
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "Pulse \"Control\" o \"Command\" en un Mac para escoger ms de uno."
+#: contrib/sessions/models.py:58
+msgid "sessions"
+msgstr "sesiones"
-#: db/models/fields/related.py:625
+#: views/generic/create_update.py:43
#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural ""
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] ""
-"Por favor, introduzca IDs de %(self)s vlidos. El valor %(value)r no es "
-"vlido."
-msgstr[1] ""
-"Por favor, introduzca IDs de %(self)s vlidos. Los valores %(value)r no son "
-"vlidos."
+msgid "The %(verbose_name)s was created successfully."
+msgstr "El %(verbose_name)s se ha creado correctamente."
-#: forms/__init__.py:380
+#: views/generic/create_update.py:117
#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Asegrese de que su texto tiene menos de %s carcter."
-msgstr[1] "Asegrese de que su texto tiene menos de %s caracteres."
+msgid "The %(verbose_name)s was updated successfully."
+msgstr "Se actualiz con xito el %(verbose_name)s."
-#: forms/__init__.py:385
-msgid "Line breaks are not allowed here."
-msgstr "No se permiten saltos de lnea."
-
-#: forms/__init__.py:480 forms/__init__.py:551 forms/__init__.py:589
+#: views/generic/create_update.py:184
#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Escoja una opcin vlida; '%(data)s' no est en %(choices)s."
-
-#: forms/__init__.py:645
-msgid "The submitted file is empty."
-msgstr "El fichero enviado est vaco."
-
-#: forms/__init__.py:699
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Introduzca un nmero entero entre -32,768 y 32,767."
-
-#: forms/__init__.py:708
-msgid "Enter a positive number."
-msgstr "Introduzca un nmero positivo."
-
-#: forms/__init__.py:717
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Introduzca un nmero entero entre 0 y 32,767."
-
-#: template/defaultfilters.py:379
-msgid "yes,no,maybe"
-msgstr "si,no,tal vez"
-
-#~ msgid "Comment"
-#~ msgstr "Comentario"
-
-#~ msgid "Comments"
-#~ msgstr "Comentarios"
-
-#~ msgid "String (up to 50)"
-#~ msgstr "Cadena (mximo 50)"
-
-#~ msgid "label"
-#~ msgstr "etiqueta"
-
-#~ msgid "package"
-#~ msgstr "paquete"
-
-#~ msgid "packages"
-#~ msgstr "paquetes"
+msgid "The %(verbose_name)s was deleted."
+msgstr "El %(verbose_name)s ha sido eliminado."
-#, fuzzy
-#~ 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."
-#~ msgstr[1] ""
-#~ "Por favor, introduzca un nmero decimal vlido con a lo ms %s dgitos en "
-#~ "total."
diff --git a/django/conf/locale/es_AR/LC_MESSAGES/django.mo b/django/conf/locale/es_AR/LC_MESSAGES/django.mo
index a247bb2385..b7f777611b 100644
--- a/django/conf/locale/es_AR/LC_MESSAGES/django.mo
+++ b/django/conf/locale/es_AR/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/es_AR/LC_MESSAGES/django.po b/django/conf/locale/es_AR/LC_MESSAGES/django.po
index 36cae2f7f2..c299f2c502 100644
--- a/django/conf/locale/es_AR/LC_MESSAGES/django.po
+++ b/django/conf/locale/es_AR/LC_MESSAGES/django.po
@@ -1,15 +1,14 @@
# Translation of django.po to Argentinean spanish, based on Spanish
# translation work by Ricardo Javier Crdenes Medina.
-# This file is distributed under the same license as the PACKAGE package.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
-# Ramiro Morales <rm0@gmx.net>, 2006.
+# This file is distributed under the same license as the Django package.
+# Copyright (C) 2006,2007 Ramiro Morales <rm0@gmx.net>
#
msgid ""
msgstr ""
"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-11-05 19:57-0300\n"
-"PO-Revision-Date: 2006-11-05 20:00-0300\n"
+"POT-Creation-Date: 2007-02-25 17:21-0300\n"
+"PO-Revision-Date: 2007-02-25 17:46-0300\n"
"Last-Translator: Ramiro Morales <rm0@gmx.net>\n"
"Language-Team: Spanish <es@li.org>\n"
"MIME-Version: 1.0\n"
@@ -17,15 +16,15 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: contrib/contenttypes/models.py:20
+#: contrib/contenttypes/models.py:26
msgid "python model class name"
msgstr "nombre de la clase python del modelo"
-#: contrib/contenttypes/models.py:23
+#: contrib/contenttypes/models.py:29
msgid "content type"
msgstr "tipo de contenido"
-#: contrib/contenttypes/models.py:24
+#: contrib/contenttypes/models.py:30
msgid "content types"
msgstr "tipos de contenido"
@@ -86,8 +85,12 @@ msgid "password"
msgstr "contrasea"
#: contrib/auth/models.py:94
-msgid "Use '[algo]$[salt]$[hexdigest]'"
-msgstr "Use '[algoritmo]$[salt]$[hexdigest]'"
+msgid ""
+"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
+"password form</a>."
+msgstr ""
+"Use '[algo]$[salt]$[hexdigest]' o use el <a href=\"password/\">formulario de "
+"cambio de contrasea</a>."
#: contrib/auth/models.py:95
msgid "staff status"
@@ -169,15 +172,15 @@ msgstr "Grupos"
msgid "message"
msgstr "mensaje"
-#: contrib/auth/forms.py:16
+#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
msgid "The two password fields didn't match."
msgstr "Los dos campos de contraseas no coinciden entre si."
-#: contrib/auth/forms.py:24
+#: contrib/auth/forms.py:25
msgid "A user with that username already exists."
msgstr "Ya existe un usuario con ese nombre."
-#: contrib/auth/forms.py:52
+#: contrib/auth/forms.py:53
msgid ""
"Your Web browser doesn't appear to have cookies enabled. Cookies are "
"required for logging in."
@@ -185,19 +188,19 @@ msgstr ""
"Su navegador Web aparenta no tener cookies activas. Las cookies son un "
"requerimiento para poder ingresar."
-#: contrib/auth/forms.py:59 contrib/admin/views/decorators.py:10
+#: 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 ""
-"Por favor ingrese un nombre de usuario y una contrasea correctos. Note que "
-"ambos campos son sensibles a maysculas/minsculas."
+"Por favor introduzca un nombre de usuario y una contrasea correctos. Note "
+"que ambos campos son sensibles a maysculas/minsculas."
-#: contrib/auth/forms.py:61
+#: contrib/auth/forms.py:62
msgid "This account is inactive."
msgstr "Esta cuenta est inactiva"
-#: contrib/auth/forms.py:84
+#: contrib/auth/forms.py:85
msgid ""
"That e-mail address doesn't have an associated user account. Are you sure "
"you've registered?"
@@ -205,11 +208,11 @@ msgstr ""
"Esa direccin de e-mail no est asociada a ninguna cuenta de usuario. Est "
"seguro de que ya se ha registrado?"
-#: contrib/auth/forms.py:116
+#: contrib/auth/forms.py:117
msgid "The two 'new password' fields didn't match."
msgstr "Los dos campos 'nueva contrasea' no coinciden entre si."
-#: contrib/auth/forms.py:123
+#: contrib/auth/forms.py:124
msgid "Your old password was entered incorrectly. Please enter it again."
msgstr ""
"La antigua contrasea ingresada es incorrecta. Por favor ingrsela "
@@ -470,13 +473,13 @@ msgstr[1] ""
"%(text)s"
#: contrib/comments/views/comments.py:116
-#, fuzzy, python-format
+#, python-format
msgid ""
"This comment was posted by a sketchy user:\n"
"\n"
"%(text)s"
msgstr ""
-"Este comentario ha sido enviado por un usuario 'sketcky':\n"
+"Este comentario ha sido enviado por un usuario 'semi-annimo':\n"
"\n"
"%(text)s"
@@ -537,6 +540,7 @@ msgstr "Usuario:"
#: 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
@@ -700,15 +704,18 @@ msgstr "Este mes"
msgid "This year"
msgstr "Este ao"
-#: contrib/admin/filterspecs.py:143
+#: contrib/admin/filterspecs.py:143 newforms/widgets.py:170
+#: oldforms/__init__.py:572
msgid "Yes"
msgstr "S"
-#: contrib/admin/filterspecs.py:143
+#: contrib/admin/filterspecs.py:143 newforms/widgets.py:170
+#: oldforms/__init__.py:572
msgid "No"
msgstr "No"
-#: contrib/admin/filterspecs.py:150
+#: contrib/admin/filterspecs.py:150 newforms/widgets.py:170
+#: oldforms/__init__.py:572
msgid "Unknown"
msgstr "Desconocido"
@@ -740,7 +747,7 @@ msgstr "entrada de registro"
msgid "log entries"
msgstr "entradas de registro"
-#: contrib/admin/templatetags/admin_list.py:230
+#: contrib/admin/templatetags/admin_list.py:238
msgid "All dates"
msgstr "Todas las fechas"
@@ -780,13 +787,13 @@ msgstr ""
msgid "Site administration"
msgstr "Sitio administrativo"
-#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:18
+#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:19
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr "Se agreg con xito %(name)s \"%(obj)s\"."
#: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347
-#: contrib/admin/views/auth.py:23
+#: contrib/admin/views/auth.py:24
msgid "You may edit it again below."
msgstr "Puede modificarlo nuevamente abajo."
@@ -932,7 +939,7 @@ msgstr "nmero de %s"
#: contrib/admin/views/doc.py:229
#, python-format
msgid "Fields on %s objects"
-msgstr "Capos en %s objetos"
+msgstr "Campos en %s objetos"
#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301
#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309
@@ -1007,10 +1014,19 @@ msgstr "Texto XML"
msgid "%s does not appear to be a urlpattern object"
msgstr "%s no parece ser un objeto urlpattern"
-#: contrib/admin/views/auth.py:29
+#: contrib/admin/views/auth.py:30
msgid "Add user"
msgstr "Agregar usuario"
+#: contrib/admin/views/auth.py:57
+msgid "Password changed successfully."
+msgstr "Cambio de contrasea exitoso"
+
+#: contrib/admin/views/auth.py:64
+#, python-format
+msgid "Change password: %s"
+msgstr "Cambiar contrasea: %S"
+
#: contrib/admin/templates/widget/file.html:2
msgid "Currently:"
msgstr "Actualmente"
@@ -1032,6 +1048,7 @@ msgstr "Hora:"
#: 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
@@ -1043,6 +1060,9 @@ msgstr "Documentacin"
#: 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
@@ -1065,6 +1085,7 @@ msgstr "Cambiar contrasea"
#: contrib/admin/templates/admin/base.html:30
#: contrib/admin/templates/admin/delete_confirmation.html:6
#: contrib/admin/templates/admin/invalid_setup.html:4
+#: 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
@@ -1075,7 +1096,7 @@ msgid "Home"
msgstr "Inicio"
#: 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"
@@ -1103,7 +1124,7 @@ msgstr ""
"Este objeto no tiene historia de modificaciones. Probablemente no fue "
"aadido usando este sitio de administracin."
-#: contrib/admin/templates/admin/change_list.html:11
+#: contrib/admin/templates/admin/change_list.html:12
#, python-format
msgid "Add %(name)s"
msgstr "Agregar %(name)s"
@@ -1210,21 +1231,22 @@ msgstr "Lo sentimos, pero no se encuentra la pgina solicitada."
msgid "Filter"
msgstr "Filtrar"
-#: contrib/admin/templates/admin/change_form.html:21
+#: contrib/admin/templates/admin/change_form.html:22
msgid "View on site"
msgstr "Ver en el sitio"
-#: 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] "Por favor, corrija el siguiente error."
msgstr[1] "Por favor, corrija los siguientes errores."
-#: contrib/admin/templates/admin/change_form.html:48
+#: contrib/admin/templates/admin/change_form.html:50
msgid "Ordering"
msgstr "Ordenacin"
-#: contrib/admin/templates/admin/change_form.html:51
+#: contrib/admin/templates/admin/change_form.html:53
msgid "Order:"
msgstr "Orden:"
@@ -1287,29 +1309,39 @@ msgstr ""
"tablas de la misma hayan sido creadas, y asegrese de que el usuario "
"apropiado tenga permisos de escritura en la base de datos."
-#: 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."
+#: contrib/admin/templates/admin/auth/user/change_password.html:28
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
msgstr ""
-"Primero, ingrese un nombre de usuario y una contrasea. Luego podr "
-"configurar opciones adicionales."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "Nombre de usuario:"
+"Introduzca una nueva contrasena para el usuario <strong>%(username)s</"
+"strong>."
+#: contrib/admin/templates/admin/auth/user/change_password.html:34
#: contrib/admin/templates/admin/auth/user/add_form.html:18
msgid "Password"
msgstr "Contrasea:"
+#: contrib/admin/templates/admin/auth/user/change_password.html:39
#: contrib/admin/templates/admin/auth/user/add_form.html:23
msgid "Password (again)"
msgstr "Contrasea (de nuevo)"
+#: 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 "Para verificacin, ingrese la misma contrasea que ingres arriba."
+msgstr "Para verificacin, introduzca la misma contrasea que ingres arriba."
+
+#: 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 ""
+"Primero, introduzca un nombre de usuario y una contrasea. Luego podr "
+"configurar opciones adicionales."
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:12
+msgid "Username"
+msgstr "Nombre de usuario:"
#: contrib/admin/templates/registration/password_change_done.html:4
#: contrib/admin/templates/registration/password_change_form.html:4
@@ -1498,6 +1530,16 @@ msgid "As above, but opens the admin page in a new window."
msgstr ""
"Como antes, pero abre la pgina de administracin en una nueva ventana."
+#: contrib/localflavor/uk/forms.py:18
+msgid "Enter a postcode. A space is required between the two postcode parts."
+msgstr ""
+"Introduzca un postcode. Se requiere un espacio entre ambas partes del "
+"postcode."
+
+#: contrib/localflavor/usa/forms.py:17
+msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
+msgstr "Introduzca un zip code en el formato XXXXX o XXXXX-XXXX."
+
#: utils/dates.py:6
msgid "Monday"
msgstr "Lunes"
@@ -1580,11 +1622,11 @@ msgstr "ene"
#: utils/dates.py:19
msgid "feb"
-msgstr ""
+msgstr "feb"
#: utils/dates.py:19
msgid "mar"
-msgstr ""
+msgstr "mar"
#: utils/dates.py:19
msgid "apr"
@@ -1592,15 +1634,15 @@ msgstr "abr"
#: utils/dates.py:19
msgid "may"
-msgstr ""
+msgstr "may"
#: utils/dates.py:19
msgid "jun"
-msgstr ""
+msgstr "jun"
#: utils/dates.py:20
msgid "jul"
-msgstr ""
+msgstr "jul"
#: utils/dates.py:20
msgid "aug"
@@ -1612,11 +1654,11 @@ msgstr "set"
#: utils/dates.py:20
msgid "oct"
-msgstr ""
+msgstr "oct"
#: utils/dates.py:20
msgid "nov"
-msgstr ""
+msgstr "nov"
#: utils/dates.py:20
msgid "dec"
@@ -1628,7 +1670,7 @@ msgstr "Enero"
#: utils/dates.py:27
msgid "Feb."
-msgstr ""
+msgstr "Feb."
#: utils/dates.py:28
msgid "Aug."
@@ -1640,11 +1682,11 @@ msgstr "Set."
#: utils/dates.py:28
msgid "Oct."
-msgstr ""
+msgstr "Oct."
#: utils/dates.py:28
msgid "Nov."
-msgstr ""
+msgstr "Nov."
#: utils/dates.py:28
msgid "Dec."
@@ -1715,126 +1757,138 @@ msgid "Bengali"
msgstr "Bengal"
#: conf/global_settings.py:41
+msgid "Catalan"
+msgstr "Cataln"
+
+#: conf/global_settings.py:42
msgid "Czech"
msgstr "Checo"
-#: conf/global_settings.py:42
+#: conf/global_settings.py:43
msgid "Welsh"
msgstr "Gals"
-#: conf/global_settings.py:43
+#: conf/global_settings.py:44
msgid "Danish"
msgstr "Dans"
-#: conf/global_settings.py:44
+#: conf/global_settings.py:45
msgid "German"
msgstr "Alemn"
-#: conf/global_settings.py:45
+#: conf/global_settings.py:46
msgid "Greek"
msgstr "Griego"
-#: conf/global_settings.py:46
+#: conf/global_settings.py:47
msgid "English"
msgstr "Ingls"
-#: conf/global_settings.py:47
+#: conf/global_settings.py:48
msgid "Spanish"
msgstr "Espaol"
-#: conf/global_settings.py:48
+#: conf/global_settings.py:49
msgid "Argentinean Spanish"
msgstr "Espaol Argentino"
-#: conf/global_settings.py:49
+#: conf/global_settings.py:50
msgid "Finnish"
msgstr "Finlands"
-#: conf/global_settings.py:50
+#: conf/global_settings.py:51
msgid "French"
msgstr "Francs"
-#: conf/global_settings.py:51
+#: conf/global_settings.py:52
msgid "Galician"
msgstr "Gallego"
-#: conf/global_settings.py:52
+#: conf/global_settings.py:53
msgid "Hungarian"
msgstr "Hngaro"
-#: conf/global_settings.py:53
+#: conf/global_settings.py:54
msgid "Hebrew"
msgstr "Hebreo"
-#: conf/global_settings.py:54
+#: conf/global_settings.py:55
msgid "Icelandic"
msgstr "Islands"
-#: conf/global_settings.py:55
+#: conf/global_settings.py:56
msgid "Italian"
msgstr "Italiano"
-#: conf/global_settings.py:56
+#: conf/global_settings.py:57
msgid "Japanese"
msgstr "Japons"
-#: conf/global_settings.py:57
+#: conf/global_settings.py:58
+msgid "Latvian"
+msgstr "Latvio"
+
+#: conf/global_settings.py:59
+msgid "Macedonian"
+msgstr "Macedonio"
+
+#: conf/global_settings.py:60
msgid "Dutch"
msgstr "Holands"
-#: conf/global_settings.py:58
+#: conf/global_settings.py:61
msgid "Norwegian"
msgstr "Noruego"
-#: conf/global_settings.py:59
+#: conf/global_settings.py:62
msgid "Polish"
msgstr "Polaco"
-#: conf/global_settings.py:60
+#: conf/global_settings.py:63
msgid "Brazilian"
msgstr "Brasileo"
-#: conf/global_settings.py:61
+#: conf/global_settings.py:64
msgid "Romanian"
msgstr "Rumano"
-#: conf/global_settings.py:62
+#: conf/global_settings.py:65
msgid "Russian"
msgstr "Ruso"
-#: conf/global_settings.py:63
+#: conf/global_settings.py:66
msgid "Slovak"
msgstr "Eslovaco"
-#: conf/global_settings.py:64
+#: conf/global_settings.py:67
msgid "Slovenian"
msgstr "Esloveno"
-#: conf/global_settings.py:65
+#: conf/global_settings.py:68
msgid "Serbian"
msgstr "Serbio"
-#: conf/global_settings.py:66
+#: conf/global_settings.py:69
msgid "Swedish"
msgstr "Sueco"
-#: conf/global_settings.py:67
+#: conf/global_settings.py:70
msgid "Tamil"
msgstr "Tamil"
-#: conf/global_settings.py:68
+#: conf/global_settings.py:71
msgid "Turkish"
msgstr "Turco"
-#: conf/global_settings.py:69
+#: conf/global_settings.py:72
msgid "Ukrainian"
msgstr "Ucraniano"
-#: conf/global_settings.py:70
+#: conf/global_settings.py:73
msgid "Simplified Chinese"
msgstr "Chino simplificado"
-#: conf/global_settings.py:71
+#: conf/global_settings.py:74
msgid "Traditional Chinese"
msgstr "Chino tradicional"
@@ -1843,58 +1897,59 @@ msgstr "Chino tradicional"
msgid "%(object)s with this %(type)s already exists for the given %(field)s."
msgstr "Ya existe un(a) %(object)s con este/a %(type)s para %(field)s."
-#: db/models/fields/__init__.py:41
+#: db/models/fields/__init__.py:42
#, python-format
msgid "%(optname)s with this %(fieldname)s already exists."
msgstr "Ya existe %(optname)s con este %(fieldname)s."
-#: db/models/fields/__init__.py:115 db/models/fields/__init__.py:266
-#: db/models/fields/__init__.py:569 db/models/fields/__init__.py:580
-#: forms/__init__.py:347
+#: db/models/fields/__init__.py:116 db/models/fields/__init__.py:273
+#: db/models/fields/__init__.py:605 db/models/fields/__init__.py:616
+#: newforms/fields.py:78 newforms/fields.py:374 newforms/fields.py:450
+#: newforms/fields.py:461 newforms/models.py:177 oldforms/__init__.py:352
msgid "This field is required."
msgstr "Este campo es obligatorio."
-#: db/models/fields/__init__.py:349
+#: db/models/fields/__init__.py:366
msgid "This value must be an integer."
msgstr "Este valor debe ser un nmero entero."
-#: db/models/fields/__init__.py:381
+#: db/models/fields/__init__.py:401
msgid "This value must be either True or False."
msgstr "Este valor debe ser True o False."
-#: db/models/fields/__init__.py:397
+#: db/models/fields/__init__.py:422
msgid "This field cannot be null."
msgstr "Este campo no puede ser nulo."
-#: db/models/fields/__init__.py:424 core/validators.py:146
+#: db/models/fields/__init__.py:454 core/validators.py:147
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "Introduzca una fecha vlida en formato AAAA-MM-DD."
-#: db/models/fields/__init__.py:488 core/validators.py:155
+#: db/models/fields/__init__.py:521 core/validators.py:156
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr "Introduzca una fecha/hora vlida en formato YYYY-MM-DD HH:MM."
-#: db/models/fields/__init__.py:589
+#: db/models/fields/__init__.py:625
msgid "Enter a valid filename."
-msgstr "Introduzca un nombre de achivo vlido"
+msgstr "Introduzca un nombre de achivo vlido."
-#: db/models/fields/related.py:51
+#: db/models/fields/related.py:53
#, python-format
msgid "Please enter a valid %s."
msgstr "Por favor, introduzca un %s vlido."
-#: db/models/fields/related.py:618
+#: db/models/fields/related.py:642
msgid "Separate multiple IDs with commas."
msgstr " Separe mltiples IDs con comas."
-#: db/models/fields/related.py:620
+#: db/models/fields/related.py:644
msgid ""
"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr ""
"Mantenga presionada \"Control\" (\"Command\" en un Mac) para seleccionar ms "
"de uno."
-#: db/models/fields/related.py:664
+#: db/models/fields/related.py:691
#, python-format
msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
msgid_plural ""
@@ -1906,48 +1961,11 @@ msgstr[1] ""
"Por favor, introduzca IDs de %(self)s vlidos. Los valores %(value)r no son "
"vlidos."
-#: forms/__init__.py:382
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Asegrese de que su texto tiene menos de %s carcter."
-msgstr[1] "Asegrese de que su texto tiene menos de %s caracteres."
-
-#: forms/__init__.py:387
-msgid "Line breaks are not allowed here."
-msgstr "No se permiten saltos de lnea."
-
-#: forms/__init__.py:488 forms/__init__.py:561 forms/__init__.py:600
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Seleccione una opcin vlida; '%(data)s' no est en %(choices)s."
-
-#: forms/__init__.py:662 core/validators.py:172 core/validators.py:401
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"No se envi un archivo. Verifique el tipo de codificacin en el formulario."
-
-#: forms/__init__.py:664
-msgid "The submitted file is empty."
-msgstr "El archivo enviado est vaco."
-
-#: forms/__init__.py:720
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Introduzca un nmero entero entre -32.768 y 32.767."
-
-#: forms/__init__.py:730
-msgid "Enter a positive number."
-msgstr "Introduzca un nmero positivo."
-
-#: forms/__init__.py:740
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Introduzca un nmero entero entre 0 y 32.767."
-
-#: core/validators.py:63
+#: core/validators.py:64
msgid "This value must contain only letters, numbers and underscores."
msgstr "Este valor debe contener slo letras, nmeros y guiones bajos."
-#: core/validators.py:67
+#: core/validators.py:68
msgid ""
"This value must contain only letters, numbers, underscores, dashes or "
"slashes."
@@ -1955,69 +1973,74 @@ msgstr ""
"Este valor debe contener slo letras, nmeros, guiones bajos, guiones o "
"barras (/)"
-#: core/validators.py:71
+#: core/validators.py:72
msgid "This value must contain only letters, numbers, underscores or hyphens."
msgstr ""
"Este valor debe contener slo letras, nmeros, guiones bajos o guiones."
-#: core/validators.py:75
+#: core/validators.py:76
msgid "Uppercase letters are not allowed here."
msgstr "No se admiten letras maysculas."
-#: core/validators.py:79
+#: core/validators.py:80
msgid "Lowercase letters are not allowed here."
msgstr "No se admiten letras minsculas."
-#: core/validators.py:86
+#: core/validators.py:87
msgid "Enter only digits separated by commas."
msgstr "Introduzca slo dgitos separados por comas."
-#: core/validators.py:98
+#: core/validators.py:99
msgid "Enter valid e-mail addresses separated by commas."
msgstr "Introduzca direcciones de correo vlidas separadas por comas."
-#: core/validators.py:102
+#: core/validators.py:103
msgid "Please enter a valid IP address."
msgstr "Por favor introduzca una direccin IP vlida."
-#: core/validators.py:106
+#: core/validators.py:107
msgid "Empty values are not allowed here."
msgstr "No se admiten valores vacos."
-#: core/validators.py:110
+#: core/validators.py:111
msgid "Non-numeric characters aren't allowed here."
msgstr "No se admiten caracteres no numricos."
-#: core/validators.py:114
+#: core/validators.py:115
msgid "This value can't be comprised solely of digits."
msgstr "Este valor no puede estar formado slo por dgitos."
-#: core/validators.py:119
+#: core/validators.py:120 newforms/fields.py:126
msgid "Enter a whole number."
msgstr "Introduzca un nmero entero."
-#: core/validators.py:123
+#: core/validators.py:124
msgid "Only alphabetical characters are allowed here."
msgstr "Slo se admiten caracteres alfabticos."
-#: core/validators.py:138
+#: core/validators.py:139
msgid "Year must be 1900 or later."
msgstr "El ao debe ser 1900 o posterior."
-#: core/validators.py:142
+#: core/validators.py:143
#, python-format
msgid "Invalid date: %s."
msgstr "Fecha no vlida: %s."
-#: core/validators.py:151
+#: core/validators.py:152
msgid "Enter a valid time in HH:MM format."
msgstr "Introduzca una hora vlida en formato HH:MM."
-#: core/validators.py:160
+#: core/validators.py:161 newforms/fields.py:269
msgid "Enter a valid e-mail address."
msgstr "Introduzca una direccin de correo electrnico vlida"
-#: core/validators.py:176
+#: 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 ""
+"No se envi un archivo. Verifique el tipo de codificacin en el formulario."
+
+#: core/validators.py:177
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
@@ -2025,28 +2048,28 @@ msgstr ""
"Enve una imagen vlida. El archivo que ha enviado no era una imagen o se "
"trataba de una imagen corrupta."
-#: core/validators.py:183
+#: core/validators.py:184
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr "La URL %s no apunta a una imagen vlida."
-#: core/validators.py:187
+#: core/validators.py:188
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr ""
"Los nmeros telefnicos deben respetar el formato XXX-XXX-XXXX. \"%s\" no es "
"vlido."
-#: core/validators.py:195
+#: core/validators.py:196
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr "La URL %s no apunta a un vdeo QuickTime vlido."
-#: core/validators.py:199
+#: core/validators.py:200
msgid "A valid URL is required."
msgstr "Se precisa una URL vlida."
-#: core/validators.py:213
+#: core/validators.py:214
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
@@ -2055,69 +2078,84 @@ msgstr ""
"Se precisa HTML vlido. Los errores especficos son:\n"
"%s"
-#: core/validators.py:220
+#: core/validators.py:221
#, python-format
msgid "Badly formed XML: %s"
msgstr "XML mal formado: %s"
-#: core/validators.py:230
+#: core/validators.py:238
#, python-format
msgid "Invalid URL: %s"
msgstr "URL no vlida: %s"
-#: core/validators.py:234 core/validators.py:236
+#: core/validators.py:243 core/validators.py:245
#, python-format
msgid "The URL %s is a broken link."
msgstr "La URL %s es un enlace roto."
-#: core/validators.py:242
+#: core/validators.py:251
msgid "Enter a valid U.S. state abbreviation."
msgstr "Introduzca una abreviatura vlida de estado de los EEUU."
-#: core/validators.py:256
+#: 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] "Vigila tu boca! Aqu no admitimos la palabra %s."
msgstr[1] "Vigila tu boca! Aqu no admitimos las palabras %s."
-#: core/validators.py:263
+#: core/validators.py:272
#, python-format
msgid "This field must match the '%s' field."
msgstr "Este campo debe concordar con el campo '%s'."
-#: core/validators.py:282
+#: core/validators.py:291
msgid "Please enter something for at least one field."
msgstr "Por favor, introduzca algo en al menos un campo."
-#: core/validators.py:291 core/validators.py:302
+#: core/validators.py:300 core/validators.py:311
msgid "Please enter both fields or leave them both empty."
msgstr "Por favor, rellene ambos campos o deje ambos vacos."
-#: core/validators.py:309
+#: core/validators.py:319
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr "Se debe proporcionar este campo si %(field)s es %(value)s"
-#: core/validators.py:321
+#: core/validators.py:332
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr "Se debe proporcionar este campo si %(field)s no es %(value)s"
-#: core/validators.py:340
+#: core/validators.py:351
msgid "Duplicate values are not allowed."
msgstr "No se admiten valores duplicados."
-#: core/validators.py:363
+#: core/validators.py:366
+#, python-format
+msgid "This value must be between %s and %s."
+msgstr "Este valor debe ser estar entre %s y %s."
+
+#: core/validators.py:368
+#, python-format
+msgid "This value must be at least %s."
+msgstr "Este valor debe ser al menos %s."
+
+#: core/validators.py:370
+#, python-format
+msgid "This value must be no more than %s."
+msgstr "Este valor debe ser no mayor que %s."
+
+#: core/validators.py:406
#, python-format
msgid "This value must be a power of %s."
msgstr "Este valor debe ser una potencia de %s."
-#: core/validators.py:374
+#: core/validators.py:417
msgid "Please enter a valid decimal number."
msgstr "Por favor, introduzca un nmero decimal vlido."
-#: core/validators.py:378
+#: core/validators.py:421
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
@@ -2129,7 +2167,7 @@ msgstr[1] ""
"Por favor, introduzca un nmero decimal vlido con un maximo de %s dgitos "
"en total."
-#: core/validators.py:381
+#: core/validators.py:424
#, python-format
msgid ""
"Please enter a valid decimal number with a whole part of at most %s digit."
@@ -2142,7 +2180,7 @@ msgstr[1] ""
"Por favor, introduzca un nmero decimal vlido con un mximo de %s dgitos "
"enteros."
-#: core/validators.py:384
+#: core/validators.py:427
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
@@ -2154,30 +2192,34 @@ msgstr[1] ""
"Por favor, introduzca un nmero decimal vlido con un mximo de %s "
"posiciones decimales."
-#: core/validators.py:394
+#: core/validators.py:437
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Asegrese de que el archivo que enva tiene al menos %s bytes."
+msgstr ""
+"Asegrese de que el archivo que enva es de un tamao mnimo de "
+"%s bytes."
-#: core/validators.py:395
+#: core/validators.py:438
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Asegrese de que el archivo que enva tiene como mximo %s bytes."
+msgstr ""
+"Asegrese de que el archivo que enva es de un tamao mximo de "
+"%s bytes."
-#: core/validators.py:412
+#: core/validators.py:455
msgid "The format for this field is wrong."
msgstr "El formato de este campo es incorrecto."
-#: core/validators.py:427
+#: core/validators.py:470
msgid "This field is invalid."
msgstr "Este campo no es vlido."
-#: core/validators.py:463
+#: core/validators.py:506
#, python-format
msgid "Could not retrieve anything from %s."
msgstr "No pude obtener nada de %s."
-#: core/validators.py:466
+#: core/validators.py:509
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
@@ -2185,7 +2227,7 @@ msgstr ""
"La URL %(url)s devolvi la cabecera Content-Type '%(contenttype)s', que no "
"es vlida."
-#: core/validators.py:499
+#: core/validators.py:542
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
@@ -2194,7 +2236,7 @@ msgstr ""
"Por favor, cierre la etiqueta %(tag)s de la lnea %(line)s. (La lnea "
"empieza por \"%(start)s\".)"
-#: core/validators.py:503
+#: core/validators.py:546
#, python-format
msgid ""
"Some text starting on line %(line)s is not allowed in that context. (Line "
@@ -2203,7 +2245,7 @@ msgstr ""
"Parte del texto que comienza en la lnea %(line)s no est permitido en ese "
"contexto. (La lnea empieza por \"%(start)s\".)"
-#: core/validators.py:508
+#: core/validators.py:551
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
@@ -2212,7 +2254,7 @@ msgstr ""
"El \"%(attr)s\" de la lnea %(line)s no es un atributo vlido. (La lnea "
"empieza por \"%(start)s\".)"
-#: core/validators.py:513
+#: core/validators.py:556
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
@@ -2221,7 +2263,7 @@ msgstr ""
"La \"<%(tag)s>\" de la lnea %(line)s no es una etiqueta vlida. (La lnea "
"empieza por \"%(start)s\".)"
-#: core/validators.py:517
+#: core/validators.py:560
#, python-format
msgid ""
"A tag on line %(line)s is missing one or more required attributes. (Line "
@@ -2230,7 +2272,7 @@ msgstr ""
"A una etiqueta de la lnea %(line)s le faltan uno o ms atributos "
"requeridos. (La lnea empieza por \"%(start)s\".)"
-#: core/validators.py:522
+#: core/validators.py:565
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
@@ -2239,9 +2281,9 @@ msgstr ""
"El atributo \"%(attr)s\" de la lnea %(line)s tiene un valor que no es "
"vlido. (La lnea empieza por \"%(start)s\".)"
-#: template/defaultfilters.py:401
+#: template/defaultfilters.py:490
msgid "yes,no,maybe"
-msgstr "si,no,tal vez"
+msgstr "si,no,talvez"
#: views/generic/create_update.py:43
#, python-format
@@ -2258,6 +2300,101 @@ msgstr "Se actualiz con xito %(verbose_name)s."
msgid "The %(verbose_name)s was deleted."
msgstr "Se elimin %(verbose_name)s."
+#: newforms/fields.py:101 newforms/fields.py:254
+#, python-format
+msgid "Ensure this value has at most %d characters."
+msgstr "Asegrese de que este valor tenga como mximo %d caracteres."
+
+#: newforms/fields.py:103 newforms/fields.py:256
+#, python-format
+msgid "Ensure this value has at least %d characters."
+msgstr "Asegrese de que este valor tenga al menos %d caracteres."
+
+#: newforms/fields.py:128
+#, python-format
+msgid "Ensure this value is less than or equal to %s."
+msgstr "Asegrese de que este valor sea menor o igual a %s."
+
+#: newforms/fields.py:130
+#, python-format
+msgid "Ensure this value is greater than or equal to %s."
+msgstr "Asegrese de que este valor sea mayor o igual a %s."
+
+#: newforms/fields.py:163
+msgid "Enter a valid date."
+msgstr "Ingrse una fecha vlida."
+
+#: newforms/fields.py:190
+msgid "Enter a valid time."
+msgstr "Introduzca una hora vlida."
+
+#: newforms/fields.py:226
+msgid "Enter a valid date/time."
+msgstr "Introduzca una fecha/hora vlida."
+
+#: newforms/fields.py:240
+msgid "Enter a valid value."
+msgstr "Introduzca un valor vlido."
+
+#: newforms/fields.py:287 newforms/fields.py:309
+msgid "Enter a valid URL."
+msgstr "Introduzca una URL vlida."
+
+#: newforms/fields.py:311
+msgid "This URL appears to be a broken link."
+msgstr "La URL parece ser un enlace roto."
+
+#: newforms/fields.py:360 newforms/models.py:164
+msgid "Select a valid choice. That choice is not one of the available choices."
+msgstr ""
+"Seleccione una opcin vlida. Esa opcin no es una de las opciones "
+"disponibles."
+
+#: newforms/fields.py:378 newforms/fields.py:454 newforms/models.py:181
+msgid "Enter a list of values."
+msgstr "Introduzca una lista de valores."
+
+#: newforms/fields.py:387 newforms/models.py:187
+#, python-format
+msgid "Select a valid choice. %s is not one of the available choices."
+msgstr ""
+"Seleccione una opcin vlida. %s no es una de las opciones disponibles."
+
+#: 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] "Asegrese de que su texto tiene menos de %s caracter."
+msgstr[1] "Asegrese de que su texto tiene menos de %s caracteres."
+
+#: oldforms/__init__.py:392
+msgid "Line breaks are not allowed here."
+msgstr "No se permiten saltos de lnea."
+
+#: 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 "Seleccione una opcin vlida; '%(data)s' no est en %(choices)s."
+
+#: oldforms/__init__.py:669
+msgid "The submitted file is empty."
+msgstr "El archivo enviado est vaco."
+
+#: oldforms/__init__.py:725
+msgid "Enter a whole number between -32,768 and 32,767."
+msgstr "Introduzca un nmero entero entre -32.768 y 32.767."
+
+#: oldforms/__init__.py:735
+msgid "Enter a positive number."
+msgstr "Introduzca un nmero positivo."
+
+#: oldforms/__init__.py:745
+msgid "Enter a whole number between 0 and 32,767."
+msgstr "Introduzca un nmero entero entre 0 y 32.767."
+
+#~ msgid "Use '[algo]$[salt]$[hexdigest]'"
+#~ msgstr "Use '[algoritmo]$[salt]$[hexdigest]'"
+
#~ msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
#~ msgstr "Ha <a href=\"/password_reset/\">olvidado su contrasea</a>?"
diff --git a/django/conf/locale/es_AR/LC_MESSAGES/djangojs.mo b/django/conf/locale/es_AR/LC_MESSAGES/djangojs.mo
index 3f89e3e33f..d8e3cc6fd6 100644
--- a/django/conf/locale/es_AR/LC_MESSAGES/djangojs.mo
+++ b/django/conf/locale/es_AR/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/django/conf/locale/es_AR/LC_MESSAGES/djangojs.po b/django/conf/locale/es_AR/LC_MESSAGES/djangojs.po
index 1865de9450..91ecb09eed 100644
--- a/django/conf/locale/es_AR/LC_MESSAGES/djangojs.po
+++ b/django/conf/locale/es_AR/LC_MESSAGES/djangojs.po
@@ -1,15 +1,14 @@
# Argentinean spanish translation for the django-admin JS files, based on
# Spanish translation work by Jorge Gajon.
-# Copyright (C)
-# This file is distributed under the same license as the PACKAGE package.
-# Ramiro Morales <rm0@gmx.net>, 2006.
+# This file is distributed under the same license as the Django package.
+# Copyright (C) Ramiro Morales <rm0@gmx.net>, 2006,2007.
#
msgid ""
msgstr ""
"Project-Id-Version: Django JavaScript 1.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-09-25 15:09-0300\n"
-"PO-Revision-Date: 2006-05-16 10:20-0300\n"
+"POT-Creation-Date: 2007-02-25 17:48-0300\n"
+"PO-Revision-Date: 2007-02-25 17:55-0300\n"
"Last-Translator: Ramiro Morales <rm0@gmx.net>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
diff --git a/django/conf/locale/fi/LC_MESSAGES/django.mo b/django/conf/locale/fi/LC_MESSAGES/django.mo
index 1e690716fd..024d2ad98b 100644
--- a/django/conf/locale/fi/LC_MESSAGES/django.mo
+++ b/django/conf/locale/fi/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/fi/LC_MESSAGES/django.po b/django/conf/locale/fi/LC_MESSAGES/django.po
index 9b91982e6b..275feaaf81 100644
--- a/django/conf/locale/fi/LC_MESSAGES/django.po
+++ b/django/conf/locale/fi/LC_MESSAGES/django.po
@@ -93,7 +93,7 @@ msgstr "tšekki"
#: conf/global_settings.py:42
msgid "Welsh"
-msgstr ""
+msgstr "wales"
#: conf/global_settings.py:43
msgid "Danish"
@@ -169,15 +169,15 @@ msgstr "venäjä"
#: conf/global_settings.py:61
msgid "Slovak"
-msgstr ""
+msgstr "slovakia"
#: conf/global_settings.py:62
msgid "Slovenian"
-msgstr ""
+msgstr "slovenia"
#: conf/global_settings.py:63
msgid "Serbian"
-msgstr ""
+msgstr "serbia"
#: conf/global_settings.py:64
msgid "Swedish"
@@ -189,15 +189,15 @@ msgstr ""
#: conf/global_settings.py:66
msgid "Ukrainian"
-msgstr ""
+msgstr "ukraina"
#: conf/global_settings.py:67
msgid "Simplified Chinese"
-msgstr ""
+msgstr "kiina (yksinkertaistettu)"
#: conf/global_settings.py:68
msgid "Traditional Chinese"
-msgstr ""
+msgstr "kiina (perinteinen)"
#: core/validators.py:63
msgid "This value must contain only letters, numbers and underscores."
@@ -211,7 +211,7 @@ msgstr "Tässä voidaan käyttää vain kirjaimia (a-z), numeroita (0-9) sekä a
#: core/validators.py:75
msgid "Uppercase letters are not allowed here."
-msgstr "Versaalit (ABC) eivät kelpaa tässä."
+msgstr "Isot kirjaimet (ABC) eivät kelpaa tässä."
#: core/validators.py:79
msgid "Lowercase letters are not allowed here."
@@ -270,7 +270,7 @@ msgstr "Kuva ei kelpaa. Lähettämäsi tiedosto ei ole kuva, tai tiedosto on vio
#: core/validators.py:162
#, python-format
msgid "The URL %s does not point to a valid image."
-msgstr "Osoittessa %s ei ole kelpaavaa kuvaa."
+msgstr "Osoittessa %s ei ole kuvaa tai se on vioittunut."
#: core/validators.py:166
#, python-format
@@ -280,7 +280,7 @@ msgstr "Puhelinnumeron tulee olla muodossa XXX-XXX-XXXX. \"%s\" ei kelpaa."
#: core/validators.py:174
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "Osoitteessa %s ei ole kelpaavaa QuickTime-videota."
+msgstr "Osoitteessa %s ei ole QuickTime-videota tai se on vioittunut."
#: core/validators.py:178
msgid "A valid URL is required."
@@ -308,7 +308,7 @@ msgstr "URL-osoite %s ei kelpaa."
#: core/validators.py:213 core/validators.py:215
#, python-format
msgid "The URL %s is a broken link."
-msgstr "Osoite %s on katkennut linkki."
+msgstr "Osoite %s on rikkoutunut tai väärä linkki."
#: core/validators.py:221
msgid "Enter a valid U.S. state abbreviation."
@@ -324,7 +324,7 @@ msgstr[1] "Sanoja \"%s\" ei saa käyttää tässä."
#: core/validators.py:243
#, python-format
msgid "This field must match the '%s' field."
-msgstr ""
+msgstr "Arvon täytyy olla sama kuin kentässä '%s'."
#: core/validators.py:262
msgid "Please enter something for at least one field."
@@ -403,7 +403,7 @@ msgstr "Tämä arvo ei kelpaa."
#: core/validators.py:441
#, python-format
msgid "Could not retrieve anything from %s."
-msgstr ""
+msgstr "Tietoja ei voida noutaa kohteesta: %s."
#: core/validators.py:444
#, python-format
@@ -1029,19 +1029,19 @@ msgstr " %(filter_title)s:"
#: contrib/admin/templates/admin/submit_line.html:4
msgid "Save as new"
-msgstr "Talleta uutena"
+msgstr "Tallenna uutena"
#: contrib/admin/templates/admin/submit_line.html:5
msgid "Save and add another"
-msgstr "Talleta ja lisää seuraava"
+msgstr "Tallenna ja lisää seuraava"
#: contrib/admin/templates/admin/submit_line.html:6
msgid "Save and continue editing"
-msgstr "Talleta välillä ja jatka muokkaamista"
+msgstr "Tallenna välillä ja jatka muokkaamista"
#: contrib/admin/templates/admin/submit_line.html:7
msgid "Save"
-msgstr "Talleta ja poistu"
+msgstr "Tallenna ja poistu"
#: contrib/admin/templates/admin/change_list.html:11
#, python-format
@@ -1676,7 +1676,13 @@ msgid_plural ""
"\n"
"%(text)s"
msgstr[0] ""
+"Kommentin kirjoittanut käyttäjä on kirjoittanut vain yhden kommentin:\n"
+"\n"
+"%(text)s"
msgstr[1] ""
+"Kommentin kirjoittanut käyttäjä on kirjoittanut alle %(count)s kommenttia:\n"
+"\n"
+"%(text)s"
# Mitä "sketchy user" tarkoittaa?
#: contrib/comments/views/comments.py:116
@@ -1972,38 +1978,38 @@ msgstr "joulu"
#: utils/timesince.py:12
msgid "year"
msgid_plural "years"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "vuosi"
+msgstr[1] "vuotta"
#: utils/timesince.py:13
msgid "month"
msgid_plural "months"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "kuukausi"
+msgstr[1] "kuukautta"
#: utils/timesince.py:14
msgid "week"
msgid_plural "weeks"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "viikko"
+msgstr[1] "viikkoa"
#: utils/timesince.py:15
msgid "day"
msgid_plural "days"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "päivä"
+msgstr[1] "päivää"
#: utils/timesince.py:16
msgid "hour"
msgid_plural "hours"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "tunti"
+msgstr[1] "tuntia"
#: utils/timesince.py:17
msgid "minute"
msgid_plural "minutes"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "minuutti"
+msgstr[1] "minuuttia"
#: utils/translation/trans_real.py:362
msgid "DATE_FORMAT"
@@ -2019,10 +2025,9 @@ msgstr "G:i"
#: utils/translation/trans_real.py:380
msgid "YEAR_MONTH_FORMAT"
-msgstr "N j, Y"
+msgstr "N Y"
#: utils/translation/trans_real.py:381
-#, fuzzy
msgid "MONTH_DAY_FORMAT"
msgstr "N j, Y"
diff --git a/django/conf/locale/fr/LC_MESSAGES/django.mo b/django/conf/locale/fr/LC_MESSAGES/django.mo
index 7b2b1f6e9e..c8dc1444d4 100644
--- a/django/conf/locale/fr/LC_MESSAGES/django.mo
+++ b/django/conf/locale/fr/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/fr/LC_MESSAGES/django.po b/django/conf/locale/fr/LC_MESSAGES/django.po
index 104e9a2aa1..98053d4678 100644
--- a/django/conf/locale/fr/LC_MESSAGES/django.po
+++ b/django/conf/locale/fr/LC_MESSAGES/django.po
@@ -1491,8 +1491,8 @@ msgstr[1] "mois"
#: utils/timesince.py:14
msgid "week"
msgid_plural "weeks"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "semaine"
+msgstr[1] "semaines"
#: utils/timesince.py:15
msgid "day"
diff --git a/django/conf/locale/it/LC_MESSAGES/django.mo b/django/conf/locale/it/LC_MESSAGES/django.mo
index 6b7dd0f01f..584531c9b2 100644
--- a/django/conf/locale/it/LC_MESSAGES/django.mo
+++ b/django/conf/locale/it/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/it/LC_MESSAGES/django.po b/django/conf/locale/it/LC_MESSAGES/django.po
index ecc1cfd159..94a83048be 100644
--- a/django/conf/locale/it/LC_MESSAGES/django.po
+++ b/django/conf/locale/it/LC_MESSAGES/django.po
@@ -1,356 +1,729 @@
+# translation of django.po to Italiano
# Italian translation of Django.
# Copyright (C) 2006 the Lawrence Journal-World
# This file is distributed under the same license as the Django package.
+#
# Carlo C8E Miron <carlo.miron AT gmail.com>, 2006.
-#
-#
+# Nicola 'tekNico' Larosa <nico AT tekNico.net>, 2007.
+# Nicola Larosa <nico@tekNico.net>, 2007.
msgid ""
msgstr ""
-"Project-Id-Version: Django pre-1.0\n"
+"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 10:12+0200\n"
-"PO-Revision-Date: 2006-05-21 23:45+0200\n"
-"Last-Translator: Carlo C8E Miron <carlo.miron AT gmail.com>\n"
-"Language-Team: Italian <Django-I18N@googlegroups.com>\n"
+"POT-Creation-Date: 2007-02-26 20:44+0100\n"
+"PO-Revision-Date: 2007-02-27 20:06+0100\n"
+"Last-Translator: Nicola Larosa <nico@tekNico.net>\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit"
-"Plural-Forms: nplurals=2; plural=(n != 1);\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"
-#: contrib/comments/models.py:67 contrib/comments/models.py:166
-msgid "object ID"
-msgstr "ID dell'oggetto"
+#: 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."
-#: contrib/comments/models.py:68
-msgid "headline"
-msgstr "intestazione"
+#: 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"
-#: contrib/comments/models.py:69 contrib/comments/models.py:90
-#: contrib/comments/models.py:167
-msgid "comment"
-msgstr "commento"
+#: db/models/fields/related.py:53
+#, python-format
+msgid "Please enter a valid %s."
+msgstr "Inserire un %s valido."
-#: contrib/comments/models.py:70
-msgid "rating #1"
-msgstr "valutazione #1"
+#: db/models/fields/related.py:642
+msgid "Separate multiple IDs with commas."
+msgstr "Separare ID multipli con virgole."
-#: contrib/comments/models.py:71
-msgid "rating #2"
-msgstr "valutazione #2"
+#: 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."
-#: contrib/comments/models.py:72
-msgid "rating #3"
-msgstr "valutazione #3"
+#: 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."
-#: contrib/comments/models.py:73
-msgid "rating #4"
-msgstr "valutazione #4"
+#: 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à."
-#: contrib/comments/models.py:74
-msgid "rating #5"
-msgstr "valutazione #5"
+#: 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."
-#: contrib/comments/models.py:75
-msgid "rating #6"
-msgstr "valutazione #6"
+#: db/models/fields/__init__.py:366
+msgid "This value must be an integer."
+msgstr "Questo valore deve essere un intero."
-#: contrib/comments/models.py:76
-msgid "rating #7"
-msgstr "valutazione #7"
+#: db/models/fields/__init__.py:401
+msgid "This value must be either True or False."
+msgstr "Questo valore deve essere True o False."
-#: contrib/comments/models.py:77
-msgid "rating #8"
-msgstr "valutazione #8"
+#: db/models/fields/__init__.py:422
+msgid "This field cannot be null."
+msgstr "Questo campo non può essere nullo."
-#: contrib/comments/models.py:82
-msgid "is valid rating"
-msgstr "valutazione valida"
+#: 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."
-#: contrib/comments/models.py:83 contrib/comments/models.py:169
-msgid "date/time submitted"
-msgstr "data/ora di sottomissione"
+#: 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."
-#: contrib/comments/models.py:84 contrib/comments/models.py:170
-msgid "is public"
-msgstr "pubblico"
+#: db/models/fields/__init__.py:629
+msgid "Enter a valid filename."
+msgstr "Inserire un nome file valido."
-#: contrib/comments/models.py:85 contrib/admin/views/doc.py:289
-msgid "IP address"
-msgstr "indirizzo IP"
+#: conf/global_settings.py:39
+msgid "Arabic"
+msgstr "Arabo"
-#: contrib/comments/models.py:86
-msgid "is removed"
-msgstr "eliminato"
+#: conf/global_settings.py:40
+msgid "Bengali"
+msgstr "Bengali"
-#: contrib/comments/models.py:86
+#: conf/global_settings.py:41
+msgid "Catalan"
+msgstr "Catalano"
+
+#: conf/global_settings.py:42
+msgid "Czech"
+msgstr "Ceco"
+
+#: conf/global_settings.py:43
+msgid "Welsh"
+msgstr "Gallese"
+
+#: conf/global_settings.py:44
+msgid "Danish"
+msgstr "Danese"
+
+#: conf/global_settings.py:45
+msgid "German"
+msgstr "Tedesco"
+
+#: conf/global_settings.py:46
+msgid "Greek"
+msgstr "Greco"
+
+#: conf/global_settings.py:47
+msgid "English"
+msgstr "Inglese"
+
+#: conf/global_settings.py:48
+msgid "Spanish"
+msgstr "Spagnolo"
+
+#: conf/global_settings.py:49
+msgid "Argentinean Spanish"
+msgstr "Spagnolo argentino"
+
+#: conf/global_settings.py:50
+msgid "Finnish"
+msgstr "Finlandese"
+
+#: conf/global_settings.py:51
+msgid "French"
+msgstr "Francese"
+
+#: conf/global_settings.py:52
+msgid "Galician"
+msgstr "Galiziano"
+
+#: conf/global_settings.py:53
+msgid "Hungarian"
+msgstr "Ungherese"
+
+#: conf/global_settings.py:54
+msgid "Hebrew"
+msgstr "Ebraico"
+
+#: conf/global_settings.py:55
+msgid "Icelandic"
+msgstr "Islandese"
+
+#: conf/global_settings.py:56
+msgid "Italian"
+msgstr "Italiano"
+
+#: conf/global_settings.py:57
+msgid "Japanese"
+msgstr "Giapponese"
+
+#: conf/global_settings.py:58
+msgid "Kannada"
+msgstr "Kannada"
+
+#: conf/global_settings.py:59
+msgid "Latvian"
+msgstr "Lettone"
+
+#: conf/global_settings.py:60
+msgid "Macedonian"
+msgstr "Macedone"
+
+#: conf/global_settings.py:61
+msgid "Dutch"
+msgstr "Olandese"
+
+#: conf/global_settings.py:62
+msgid "Norwegian"
+msgstr "Norvegese"
+
+#: conf/global_settings.py:63
+msgid "Polish"
+msgstr "Polacco"
+
+#: conf/global_settings.py:64
+msgid "Brazilian"
+msgstr "Brasiliano"
+
+#: conf/global_settings.py:65
+msgid "Romanian"
+msgstr "Rumeno"
+
+#: conf/global_settings.py:66
+msgid "Russian"
+msgstr "Russo"
+
+#: conf/global_settings.py:67
+msgid "Slovak"
+msgstr "Slovacco"
+
+#: conf/global_settings.py:68
+msgid "Slovenian"
+msgstr "Sloveno"
+
+#: conf/global_settings.py:69
+msgid "Serbian"
+msgstr "Serbo"
+
+#: conf/global_settings.py:70
+msgid "Swedish"
+msgstr "Svedese"
+
+#: conf/global_settings.py:71
+msgid "Tamil"
+msgstr "Tamil"
+
+#: conf/global_settings.py:72
+msgid "Turkish"
+msgstr "Turco"
+
+#: conf/global_settings.py:73
+msgid "Ukrainian"
+msgstr "Ucraino"
+
+#: conf/global_settings.py:74
+msgid "Simplified Chinese"
+msgstr "Cinese semplificato"
+
+#: conf/global_settings.py:75
+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 ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
+"This value must contain only letters, numbers, underscores, dashes or "
+"slashes."
msgstr ""
-"Spunta la casella se il commento è inappropriato. Verrà sostituito con un "
-"messaggio \"Questo commento è stato rimosso\"."
+"Questo valore può contenere solo lettere, cifre, sottolineature, trattini e "
+"barre diagonali."
-#: contrib/comments/models/comments.py:31
-msgid "Comment"
-msgstr "Commento"
+#: 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."
-#: contrib/comments/models/comments.py:32
-#: contrib/comments/models.py:91
-msgid "Comments"
-msgstr "Commenti"
+#: core/validators.py:76
+msgid "Uppercase letters are not allowed here."
+msgstr "Non sono ammesse lettere maiuscole."
-#: contrib/comments/models.py:131 contrib/comments/models.py:207
-msgid "Content object"
-msgstr "Contenitore"
+#: core/validators.py:80
+msgid "Lowercase letters are not allowed here."
+msgstr "Non sono ammesse lettere minuscole."
-#: contrib/comments/models.py:159
+#: 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 ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
+"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 ""
-"Commento di %(user)s del %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
+"È richiesto HTML valido. Gli errori sono i seguenti:\n"
+"%s"
-#: contrib/comments/models.py:168
-msgid "person's name"
-msgstr "nome della persona"
+#: core/validators.py:221
+#, python-format
+msgid "Badly formed XML: %s"
+msgstr "XML malformato: %s"
-#: contrib/comments/models.py:171
-msgid "ip address"
-msgstr "indirizzo IP"
+#: core/validators.py:238
+#, python-format
+msgid "Invalid URL: %s"
+msgstr "URL non valida: %s"
-#: contrib/comments/models.py:173
-msgid "approved by staff"
-msgstr "approvato dallo staff"
+#: 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."
-#: contrib/comments/models.py:176
-msgid "free comment"
-msgstr "commento libero"
+#: core/validators.py:251
+msgid "Enter a valid U.S. state abbreviation."
+msgstr "Inserire un valido nome di stato USA abbreviato."
-#: contrib/comments/models.py:177
-msgid "free comments"
-msgstr "commenti liberi"
+#: 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."
-#: contrib/comments/models.py:233
-msgid "score"
-msgstr "punteggio"
+#: core/validators.py:272
+#, python-format
+msgid "This field must match the '%s' field."
+msgstr "Questo campo deve corrispondere al campo '%s'."
-#: contrib/comments/models.py:234
-msgid "score date"
-msgstr "data punteggio"
+#: core/validators.py:291
+msgid "Please enter something for at least one field."
+msgstr "Inserire qualcosa in almeno un campo."
-#: contrib/comments/models.py:237
-msgid "karma score"
-msgstr "livello karma"
+#: 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."
-#: contrib/comments/models.py:238
-msgid "karma scores"
-msgstr "livelli karma"
+#: 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"
-#: contrib/comments/models.py:242
+#: core/validators.py:332
#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "valutazione: %(score)d da %(user)s"
+msgid "This field must be given if %(field)s is not %(value)s"
+msgstr "Questo campo è obbligatorio se %(field)s non è %(value)s"
-#: contrib/comments/models.py:258
+#: core/validators.py:351
+msgid "Duplicate values are not allowed."
+msgstr "Non sono ammessi valori duplicati."
+
+#: core/validators.py:366
#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Questo commento ha un flag di %(user)s:\n"
-"\n"
-"%(text)s"
+msgid "This value must be between %s and %s."
+msgstr "Questo valore deve essere compreso tra %s e %s."
-#: contrib/comments/models.py:265
-msgid "flag date"
-msgstr "data flag"
+#: core/validators.py:368
+#, python-format
+msgid "This value must be at least %s."
+msgstr "Questo valore deve essere almeno pari a %s."
-#: contrib/comments/models.py:268
-msgid "user flag"
-msgstr "flag utente"
+#: core/validators.py:370
+#, python-format
+msgid "This value must be no more than %s."
+msgstr "Questo valore non deve essere maggiore di %s."
-#: contrib/comments/models.py:269
-msgid "user flags"
-msgstr "flag utente"
+#: core/validators.py:406
+#, python-format
+msgid "This value must be a power of %s."
+msgstr "Questo valore deve essere una potenza di %s."
-#: contrib/comments/models.py:273
+#: core/validators.py:417
+msgid "Please enter a valid decimal number."
+msgstr "Inserire un numero decimale valido."
+
+#: core/validators.py:421
#, python-format
-msgid "Flag by %r"
-msgstr "Flag da %r"
+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."
-#: contrib/comments/models/comments.py:278
-#: contrib/comments/models.py:278
-msgid "deletion date"
-msgstr "data eliminazione"
+#: 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."
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "rimozione da moderatore"
+#: 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."
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "rimozioni da moderatore"
+#: 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."
-#: contrib/comments/models.py:285
+#: core/validators.py:438
#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Rimozione da moderatore di %r"
+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."
-#: contrib/comments/views/karma.py:19
-msgid "Anonymous users cannot vote"
-msgstr "Gli utenti anonimi non possono votare"
+#: core/validators.py:455
+msgid "The format for this field is wrong."
+msgstr "Il formato di questo campo non è valido."
-#: contrib/comments/views/karma.py:23
-msgid "Invalid comment ID"
-msgstr "ID commento non valido"
+#: core/validators.py:470
+msgid "This field is invalid."
+msgstr "Questo campo non è valido."
-#: contrib/comments/views/karma.py:25
-msgid "No voting for yourself"
-msgstr "Non votare per te stesso"
+#: 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\".)"
-#: contrib/comments/views/comments.py:28
+#: core/validators.py:546
+#, python-format
msgid ""
-"This rating is required because you've entered at least one other rating."
+"Some text starting on line %(line)s is not allowed in that context. (Line "
+"starts with \"%(start)s\".)"
msgstr ""
-"Questa valutazione è obbligatoria perché hai inserito almeno un'altra valutazione"
+"Il testo che comincia a linea %(line)s non e' ammesso in questo contesto. "
+"(La linea comincia con \"%(start)s\".)"
-#: contrib/comments/views/comments.py:112
+#: core/validators.py:551
#, 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] ""
-"Commento di un utente autore di meno di %(count)s commento:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"Commento di un utente autore di meno di %(count)s commenti:\n"
-"\n"
-"%(text)s"
-""
+"\"%(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\".)"
-#: contrib/comments/views/comments.py:117
+#: core/validators.py:556
#, python-format
msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
+"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
+"(start)s\".)"
msgstr ""
-"Commento di un utente \"sketchy\":\n"
-"\n"
-"%(text)s"
+"\"<%(tag)s>\" a linea %(line)s non è un tag valido. (La linea comincia con \"%"
+"(start)s\".)"
-#: contrib/comments/views/comments.py:189
-#: contrib/comments/views/comments.py:280
-msgid "Only POSTs are allowed"
-msgstr "Sono ammessi solo POST"
+#: 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\".)"
-#: contrib/comments/views/comments.py:193
-#: contrib/comments/views/comments.py:284
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Uno o più dei campi richiesti non sono stati sottomessi"
+#: 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/comments/views/comments.py:197
-#: 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/auth/forms.py:17 contrib/auth/forms.py:138
+msgid "The two password fields didn't match."
+msgstr "I due campi parola chiave non corrispondono."
-#: contrib/comments/views/comments.py:207
-#: contrib/comments/views/comments.py:292
+#: 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 ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
+"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 ""
-"Il modulo di commento ha un parametro 'target' non valido -- l'ID dell'oggetto non e` valido"
+"Inserire nome utente e password corretti. Entrambi i campi sono case "
+"sensitive."
-#: 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 'anteprima' o 'invia'"
+#: contrib/auth/forms.py:62
+msgid "This account is inactive."
+msgstr "Questo account non è attivo."
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:17
-msgid "Username:"
-msgstr "Nome utente:"
+#: 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/comments/templates/comments/form.html:6
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
-msgstr "Password:"
+#: contrib/auth/forms.py:117
+msgid "The two 'new password' fields didn't match."
+msgstr "I due campi 'nuova parola chiave' non corrispondono."
-#: contrib/comments/templates/comments/form.html:6
-msgid "Forgotten your password?"
-msgstr "Hai dimenticato la password?"
+#: 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/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/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 "Esci"
+#: contrib/auth/models.py:38 contrib/auth/models.py:57
+msgid "name"
+msgstr "nome"
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Valutazioni"
+#: contrib/auth/models.py:40
+msgid "codename"
+msgstr "nome in codice"
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Obbligatorio"
+#: contrib/auth/models.py:42
+msgid "permission"
+msgstr "permesso"
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Opzionale"
+#: contrib/auth/models.py:43 contrib/auth/models.py:58
+msgid "permissions"
+msgstr "permessi"
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Invia una foto"
+#: contrib/auth/models.py:60
+msgid "group"
+msgstr "gruppo"
-#: contrib/comments/templates/comments/form.html:27
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Commento:"
+#: contrib/auth/models.py:61 contrib/auth/models.py:100
+msgid "groups"
+msgstr "gruppi"
-#: contrib/comments/templates/comments/form.html:32
-#: contrib/comments/templates/comments/freeform.html:9
-msgid "Preview comment"
-msgstr "Anteprima commento"
+#: contrib/auth/models.py:90
+msgid "username"
+msgstr "nome utente"
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Il tuo nome:"
+#: 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 "parola chiave"
+
+#: contrib/auth/models.py:94
+msgid ""
+"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
+"password form</a>."
+msgstr "Usare '[algo]$[salt]$[hexdigest]' oppure la maschera di <a href=\"password/\">cambio parola chiave</a>."
+
+#: 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
@@ -362,7 +735,7 @@ msgstr ""
"<ul>\n"
#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143
+#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169
msgid "All"
msgstr "Tutti"
@@ -386,469 +759,446 @@ msgstr "Questo mese"
msgid "This year"
msgstr "Quest'anno"
-#: contrib/admin/filterspecs.py:143
+#: contrib/admin/filterspecs.py:143 oldforms/__init__.py:572
+#: newforms/widgets.py:170
msgid "Yes"
msgstr "Sì"
-#: contrib/admin/filterspecs.py:143
+#: contrib/admin/filterspecs.py:143 oldforms/__init__.py:572
+#: newforms/widgets.py:170
msgid "No"
msgstr "No"
-#: contrib/admin/filterspecs.py:150
+#: contrib/admin/filterspecs.py:150 oldforms/__init__.py:572
+#: newforms/widgets.py:170
msgid "Unknown"
msgstr "Sconosciuto"
-#: contrib/admin/models.py:16
-msgid "action time"
-msgstr "data azione"
-
-#: contrib/admin/models.py:19
-msgid "object id"
-msgstr "ID dell'oggetto"
-
-#: contrib/admin/models.py:20
-msgid "object repr"
-msgstr "rappresentazione dell'oggetto"
-
-#: contrib/admin/models.py:21
-msgid "action flag"
-msgstr "flag azione"
-
-#: contrib/admin/models.py:22
-msgid "change message"
-msgstr "modifica messaggio"
-
-#: 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/templatetags/admin_list.py:228
-msgid "All dates"
-msgstr "Tutte le date"
-
-#: contrib/admin/views/decorators.py:9 contrib/auth/forms.py:36
-#: contrib/auth/forms.py:41
-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:23
+#: contrib/admin/views/decorators.py:24
#: contrib/admin/templates/admin/login.html:25
msgid "Log in"
msgstr "Accedi"
-#: 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 ""
-"La sessione è scaduta, si prega di accedere nuovamente. I dati sono stati salvati."
+"La sessione è scaduta: occorre accedere nuovamente. I dati inseriti sono stati comunque"
+"salvati."
-#: 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 ""
-"Il browser non è configurato per accettare cookie. Abilitarli, ricaricare la pagina e provare di nuovo."
+msgstr "Il browser non sembra configurato per accettare i cookie. Una volta abilitati, ricaricare la pagina e riprovare."
-#: contrib/admin/views/decorators.py:82
+#: contrib/admin/views/decorators.py:83
msgid "Usernames cannot contain the '@' character."
-msgstr "Il nome utente non può contenere il carattere '@'."
+msgstr "I nomi utente non possono contenere il carattere '@'."
-#: 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 "Il nome utente non è l'indirizzo e-mail. Provare con '%s'."
+msgstr "Il nome utente non è costituito dall'indirizzo e-mail. Provare con '%s'."
-#: contrib/admin/views/main.py:226
+#: contrib/admin/views/main.py:223
msgid "Site administration"
msgstr "Amministrazione sito"
-#: contrib/admin/views/main.py:410
+#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:19
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "L'oggetto %(name)s di tipo \"%(obj)s\" è stato aggiunto."
+msgstr "%(name)s \"%(obj)s\" è stato aggiunto correttamente."
-#: contrib/admin/views/main.py:264 contrib/admin/views/main.py:348
+#: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347
+#: contrib/admin/views/auth.py:24
msgid "You may edit it again below."
-msgstr "Puoi modificarlo nuovamente qui sotto."
+msgstr "È possibile modificarlo nuovamente qui sotto."
-#: contrib/admin/views/main.py:272 contrib/admin/views/main.py:357
+#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356
#, python-format
msgid "You may add another %s below."
-msgstr "Puoi aggiungere un altro %s qui sotto."
+msgstr "È possibile aggiungere un altro %s qui sotto."
-#: contrib/admin/views/main.py:290
+#: contrib/admin/views/main.py:289
#, python-format
msgid "Add %s"
-msgstr "Aggiungi %s"
+msgstr "Aggiungere %s"
-#: contrib/admin/views/main.py:336
+#: contrib/admin/views/main.py:335
#, python-format
msgid "Added %s."
msgstr "Aggiunto %s"
-#: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338
-#: contrib/admin/views/main.py:340
-msgid "and"
-msgstr "e"
-
-#: contrib/admin/views/main.py:338
+#: contrib/admin/views/main.py:337
#, python-format
msgid "Changed %s."
msgstr "Modificato %s."
-#: contrib/admin/views/main.py:340
+#: contrib/admin/views/main.py:339
#, python-format
msgid "Deleted %s."
-msgstr "Rimosso %s"
+msgstr "Cancellato %s"
-#: contrib/admin/views/main.py:343
+#: contrib/admin/views/main.py:342
msgid "No fields changed."
msgstr "Nessun campo modificato."
-#: contrib/admin/views/main.py:346
+#: contrib/admin/views/main.py:345
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "L'oggetto %(name)s di tipo \"%(obj)s\" è stato modificato."
+msgstr "%(name)s \"%(obj)s\" è stato modificato correttamente."
-#: contrib/admin/views/main.py:354
+#: contrib/admin/views/main.py:353
#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"L'oggetto %(name)s di tipo \"%(obj)s\" è stato aggiunto. Puoi modificarlo nuovamente qui sotto."
+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:392
+#: contrib/admin/views/main.py:391
#, python-format
msgid "Change %s"
-msgstr "Modifica %s"
+msgstr "Modificare %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 "Uno o più %(fieldname)s in %(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 "Uno o più %(fieldname)s in %(name)s:"
-#: contrib/admin/views/main.py:508
+#: contrib/admin/views/main.py:514
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "L'oggetto %(name)s di tipo \"%(obj)s\" è stato rimosso."
+msgstr "%(name)s \"%(obj)s\" è stato cancellato correttamente."
-#: contrib/admin/views/main.py:511
+#: contrib/admin/views/main.py:517
msgid "Are you sure?"
msgstr "Sei sicuro?"
-#: contrib/admin/views/main.py:533
+#: contrib/admin/views/main.py:539
#, python-format
msgid "Change history: %s"
-msgstr "Storia delle modifiche: %s"
+msgstr "Tracciato delle modifiche: %s"
-#: contrib/admin/views/main.py:565
+#: contrib/admin/views/main.py:573
#, python-format
msgid "Select %s"
-msgstr "Selezionare %s"
+msgstr "Seleziona %s"
-#: contrib/admin/views/main.py:565
+#: contrib/admin/views/main.py:573
#, python-format
msgid "Select %s to change"
-msgstr "Selezionare %s per modificare"
+msgstr "Seleziona %s per modificare"
-#: contrib/admin/views/doc.py:277 contrib/admin/views/doc.py:286
-#: contrib/admin/views/doc.py:288 contrib/admin/views/doc.py:294
-#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:297
+#: contrib/admin/views/main.py:768
+msgid "Database error"
+msgstr "Errore nel database"
+
+#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48
+#: contrib/admin/views/doc.py:50
+msgid "tag:"
+msgstr "tag:"
+
+#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79
+#: contrib/admin/views/doc.py:81
+msgid "filter:"
+msgstr "filtro:"
+
+#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137
+#: contrib/admin/views/doc.py:139
+msgid "view:"
+msgstr "view:"
+
+#: contrib/admin/views/doc.py:164
+#, python-format
+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"
+msgstr "Modello %r non trovato nell'appl. %r"
+
+#: contrib/admin/views/doc.py:183
+#, python-format
+msgid "the related `%s.%s` object"
+msgstr "l'oggetto `%s.%s` collegato"
+
+#: 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 "modello:"
+
+#: contrib/admin/views/doc.py:214
+#, python-format
+msgid "related `%s.%s` objects"
+msgstr "oggetti `%s.%s` collegati"
+
+#: contrib/admin/views/doc.py:219
+#, python-format
+msgid "all %s"
+msgstr "tutti %s"
+
+#: contrib/admin/views/doc.py:224
+#, python-format
+msgid "number of %s"
+msgstr "numero di %s"
+
+#: contrib/admin/views/doc.py:229
+#, python-format
+msgid "Fields on %s objects"
+msgstr "Campi sugli oggetti %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 "Intero"
-#: contrib/admin/views/doc.py:278
+#: contrib/admin/views/doc.py:292
msgid "Boolean (Either True or False)"
msgstr "Booleano (True o False)"
-#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:296
+#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311
#, python-format
msgid "String (up to %(maxlength)s)"
-msgstr "Stringa (massimo %(maxlength)s caratteri)"
+msgstr "Stringa (fino a %(maxlength)s caratteri)"
-#: contrib/admin/views/doc.py:280
+#: contrib/admin/views/doc.py:294
msgid "Comma-separated integers"
msgstr "Interi separati da virgola"
-#: contrib/admin/views/doc.py:281
+#: contrib/admin/views/doc.py:295
msgid "Date (without time)"
msgstr "Data (senza orario)"
-#: contrib/admin/views/doc.py:282
+#: contrib/admin/views/doc.py:296
msgid "Date (with time)"
msgstr "Data (con orario)"
-#: contrib/admin/views/doc.py:283
+#: contrib/admin/views/doc.py:297
msgid "E-mail address"
msgstr "Indirizzo e-mail"
-#: contrib/admin/views/doc.py:284 contrib/admin/views/doc.py:287
+#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299
+#: contrib/admin/views/doc.py:302
msgid "File path"
msgstr "Percorso di file"
-#: contrib/admin/views/doc.py:285
+#: contrib/admin/views/doc.py:300
msgid "Decimal number"
msgstr "Numero decimale"
-#: contrib/admin/views/doc.py:291
+#: contrib/admin/views/doc.py:304 contrib/comments/models.py:85
+msgid "IP address"
+msgstr "indirizzo IP"
+
+#: contrib/admin/views/doc.py:306
msgid "Boolean (Either True, False or None)"
msgstr "Booleano (True, False o None)"
-#: contrib/admin/views/doc.py:292
+#: contrib/admin/views/doc.py:307
msgid "Relation to parent model"
-msgstr "Relazione a modello padre"
+msgstr "Collegamento a modello padre"
-#: contrib/admin/views/doc.py:293
+#: contrib/admin/views/doc.py:308
msgid "Phone number"
msgstr "Numero di telefono"
-#: contrib/admin/views/doc.py:263
-msgid "String (up to 50)"
-msgstr "Stringa (massimo 50 caratteri)"
-
-#: contrib/admin/views/doc.py:298
+#: contrib/admin/views/doc.py:313
msgid "Text"
msgstr "Testo"
-#: contrib/admin/views/doc.py:299
+#: contrib/admin/views/doc.py:314
msgid "Time"
-msgstr "Ora"
+msgstr "Orario"
-#: contrib/admin/views/doc.py:300 contrib/flatpages/models.py:7
+#: contrib/admin/views/doc.py:315 contrib/flatpages/models.py:7
msgid "URL"
msgstr "URL"
-#: contrib/admin/views/doc.py:301
+#: contrib/admin/views/doc.py:316
msgid "U.S. state (two uppercase letters)"
-msgstr "Stato americano (due lettere maiuscole)"
+msgstr "Stato USA (due lettere maiuscole)"
-#: contrib/admin/views/doc.py:302
+#: contrib/admin/views/doc.py:317
msgid "XML text"
msgstr "Testo 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/views/doc.py:343
+#, python-format
+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/auth.py:57
+msgid "Password changed successfully."
+msgstr "La parola chiave è stata cambiata correttamente."
+
+#: contrib/admin/views/auth.py:64
+#, python-format
+msgid "Change password: %s"
+msgstr "Cambia la parola chiave: %s"
+
+#: contrib/admin/templatetags/admin_list.py:247
+msgid "All dates"
+msgstr "Tutte le date"
+
+#: contrib/admin/templates/admin/pagination.html:10
+msgid "Show all"
+msgstr "Mostra tutto"
+
#: contrib/admin/templates/admin/delete_confirmation.html:3
#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
+#: contrib/admin/templates/admin/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/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
#: contrib/admin/templates/admin/delete_confirmation.html:3
#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
+#: 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/view_detail.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 parola chiave"
+
+#: 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_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Change password"
-msgstr "Modifica la password"
+#: 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/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/change_form.html:13
-#: contrib/admin/templates/registration/password_change_done.html:4
+#: 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/admin_doc/bookmarklets.html:3
+#: contrib/admin/templates/registration/password_change_done.html:4
msgid "Home"
msgstr "Pagina iniziale"
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_form.html:20
-msgid "History"
-msgstr "Storia"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Date/time"
-msgstr "Data/ora"
-
-#: 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 storicizzati. Probabilmente non è stato "
-"creato con questo sito di amministrazione."
-
-#: 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/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 <em>(500)</em>"
-msgstr "Errore del Server <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"C'è stato un errore. E' stato riportato agli amministratori del sito via e-"
-"mail e verrà risolto a breve. Grazie per la pazienza."
-
-#: 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 "Spiacente, ma la pagina richiesta non esiste."
-
-#: 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:28
-#: contrib/admin/templates/admin/change_form.html:15
-msgid "Add"
-msgstr "Aggiungi"
-
-#: 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 permessi di modificare nulla."
-
-#: 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 "Nessuna disponibile"
-
-#: contrib/admin/templates/admin/change_list.html:11
-#, python-format
-msgid "Add %(name)s"
-msgstr "Aggiungi %(name)s"
-
-#: contrib/admin/templates/admin/login.html:22
-msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-msgstr "Hai <a href=\"/password_reset/\">dimenticato la tua password</a>?"
-
-#: contrib/admin/templates/admin/base.html:23
-msgid "Welcome,"
-msgstr "Benvenuto,"
-
#: contrib/admin/templates/admin/delete_confirmation.html:9
#: contrib/admin/templates/admin/submit_line.html:3
msgid "Delete"
-msgstr "Elimina"
+msgstr "Cancella"
#: 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 ""
-"La rimozione di %(object_name)s '%(object)s' causerebbe la cancellazione "
-"degli oggetti relazionati, ma il tuo account non ha i permessi per rimuovere "
-"i seguenti tipi di oggetti:"
+"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 \"%(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 ""
-"Sei sicuro di voler rimuovere %(object_name)s \"%(object)s\"? I seguenti "
-"oggetti relazionati saranno rimossi:"
+"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 %(title)s "
-msgstr " Per %(title)s "
+#: 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/search_form.html:8
-msgid "Go"
-msgstr "Vai"
+#: 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: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] "Correggere l'errore qui sotto."
msgstr[1] "Correggere gli errori qui sotto."
-#: contrib/admin/templates/admin/change_form.html:48
+#: contrib/admin/templates/admin/change_form.html:50
msgid "Ordering"
msgstr "Ordinamento"
-#: contrib/admin/templates/admin/change_form.html:51
+#: contrib/admin/templates/admin/change_form.html:53
msgid "Order:"
-msgstr "Ordinamento:"
+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"
@@ -856,130 +1206,174 @@ msgstr "Salva come nuovo"
#: contrib/admin/templates/admin/submit_line.html:5
msgid "Save and add another"
-msgstr "Salva e crea nuovo"
+msgstr "Salva e aggiungi un altro"
#: contrib/admin/templates/admin/submit_line.html:6
msgid "Save and continue editing"
-msgstr "Salva e continua"
+msgstr "Salva e continua le modifiche"
#: contrib/admin/templates/admin/submit_line.html:7
msgid "Save"
msgstr "Salva"
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "Modifica la password"
+#: contrib/admin/templates/admin/change_list.html:12
+#, python-format
+msgid "Add %(name)s"
+msgstr "Aggiungi %(name)s"
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "La password è stata cambiata"
+#: 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/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "La tua password è stata modificata."
+#: contrib/admin/templates/admin/index.html:18
+#, python-format
+msgid "%(name)s"
+msgstr "%(name)s"
-#: 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 "Resetta la password"
+#: contrib/admin/templates/admin/index.html:34
+msgid "Change"
+msgstr "Modifica"
-#: 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 ""
-"Hai dimenticato la tua password? Inserisci il tuo indirizzo e-mail qui "
-"sotto, la tua password sarà resettata e te ne verrà spedita una nuova."
+#: 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/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "Indirizzo e-mail:"
+#: contrib/admin/templates/admin/index.html:52
+msgid "Recent Actions"
+msgstr "Azioni Recenti"
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Resetta la mia password"
+#: contrib/admin/templates/admin/index.html:53
+msgid "My Actions"
+msgstr "Azioni Proprie"
-#: 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 con questo sito."
+#: contrib/admin/templates/admin/index.html:57
+msgid "None available"
+msgstr "Nessuno disponibile"
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Accedi di nuovo"
+#: contrib/admin/templates/admin/base_site.html:4
+msgid "Django site admin"
+msgstr "Amministrazione sito Django"
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Password resettata"
+#: contrib/admin/templates/admin/base_site.html:7
+msgid "Django administration"
+msgstr "Amministrazione Django"
-#: 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 ""
-"Ti abbiamo inviato la nuova password all'indirizzo e-mail da te selezionato. "
-"Dovresti riceverla a breve."
+#: contrib/admin/templates/admin/object_history.html:18
+msgid "Date/time"
+msgstr "Data/orario"
-#: contrib/admin/templates/registration/password_change_form.html:12
+#: 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 ""
-"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 ""
-"Inserisci la tua vecchia password, per ragioni di sicurezza, e poi la tua "
-"nuova password due volte per verificare che tu l'abbia scritta correttamente."
+"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/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Vecchia password:"
+#: contrib/admin/templates/admin/500.html:4
+msgid "Server error"
+msgstr "Errore del server"
-#: contrib/admin/templates/registration/password_change_form.html:19
-msgid "New password:"
-msgstr "Nuova password:"
+#: contrib/admin/templates/admin/500.html:6
+msgid "Server error (500)"
+msgstr "Errore del server (500)"
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
-msgstr "Conferma password:"
+#: contrib/admin/templates/admin/500.html:9
+msgid "Server Error <em>(500)</em>"
+msgstr "Errore del server <em>(500)</em>"
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
-msgstr "Modifica la mia password"
+#: 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/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 resettare la password"
+#: 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/registration/password_reset_email.html:3
+#: contrib/admin/templates/admin/search_form.html:8
+msgid "Go"
+msgstr "Vai"
+
+#: contrib/admin/templates/admin/search_form.html:10
#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "per il tuo account utente su %(site_name)s"
+msgid "1 result"
+msgid_plural "%(counter)s results"
+msgstr[0] "1 risultato"
+msgstr[1] "%(counter)s risultati"
-#: contrib/admin/templates/registration/password_reset_email.html:5
+#: contrib/admin/templates/admin/search_form.html:10
#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "La tua nuova password è: %(new_password)s"
+msgid "%(full_result_count)s total"
+msgstr "%(full_result_count)s totali"
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "Puoi modificare la tua password su questa pagina:"
+#: contrib/admin/templates/admin/filters.html:4
+msgid "Filter"
+msgstr "Filtro"
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "Il tuo nome utente, in caso tu l'abbia dimenticato:"
+#: 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/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "Ti ringraziamo per l'utilizzo del nostro sito!"
+#: contrib/admin/templates/admin/login.html:20
+#: contrib/comments/templates/comments/form.html:8
+msgid "Password:"
+msgstr "Parola chiave:"
-#: contrib/admin/templates/registration/password_reset_email.html:15
+#: contrib/admin/templates/admin/login.html:22
+msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
+msgstr "Hai <a href=\"/password_reset/\">dimenticato la parola chiave</a>?"
+
+#: 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 parola chiave. 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 "Parola chiave"
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:23
+#: contrib/admin/templates/admin/auth/user/change_password.html:39
+msgid "Password (again)"
+msgstr "Parola chiave (di nuovo)"
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:24
+#: contrib/admin/templates/admin/auth/user/change_password.html:40
+msgid "Enter the same password as above, for verification."
+msgstr "Inserire la stessa parola chiave inserita sopra, come verifica."
+
+#: contrib/admin/templates/admin/auth/user/change_password.html:28
#, python-format
-msgid "The %(site_name)s team"
-msgstr "Il team di %(site_name)s"
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr "Inserire una nuova parola chiave per l'utente <strong>%(username)s</strong>."
#: contrib/admin/templates/admin_doc/bookmarklets.html:3
msgid "Bookmarklets"
@@ -1000,12 +1394,12 @@ msgid ""
"your computer is \"internal\").</p>\n"
msgstr ""
"\n"
-"<p class=\"help\">Per installare i bookmarklet, trascinare il link nella barra \n"
-"dei bookmark, o cliccare il link con il tasto destro e selezionare aggiungi ai \n"
-"bookmark. È possibile selezionare il bookmarklet da qualsiasi pagina del sito. \n"
-"Alcuni di questi bookmarklet richiedono l'utilizzo di un computer \"interno\" \n"
-"(chiedi al tuo amministratore di sistema se non sei sicuro che il tuo computer \n"
-"sia \"interno\").</p>\n"
+"<p class=\"help\">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\").</p>\n"
#: contrib/admin/templates/admin_doc/bookmarklets.html:19
msgid "Documentation for this page"
@@ -1016,7 +1410,8 @@ msgid ""
"Jumps you from any page to the documentation for the view that generates "
"that page."
msgstr ""
-"Ti porta da qualsiasi pagina alla documentazione della view che genera quella pagina."
+"Porta da qualsiasi pagina alla documentazione della view che genera "
+"quella pagina."
#: contrib/admin/templates/admin_doc/bookmarklets.html:22
msgid "Show object ID"
@@ -1026,8 +1421,7 @@ msgstr "Mostra l'ID dell'oggetto"
msgid ""
"Shows the content-type and unique ID for pages that represent a single "
"object."
-msgstr ""
-"Mostra il tipo di contenuto e l'ID univoco per pagine che rappresentano un singolo oggetto."
+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)"
@@ -1035,7 +1429,7 @@ 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 "Ti porta alla pagina amministrativa per pagine che rappresentano un oggetto singolo."
+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)"
@@ -1051,7 +1445,7 @@ msgstr "Data:"
#: contrib/admin/templates/widget/date_time.html:4
msgid "Time:"
-msgstr "Ora:"
+msgstr "Orario:"
#: contrib/admin/templates/widget/file.html:2
msgid "Currently:"
@@ -1061,41 +1455,134 @@ msgstr "Attualmente:"
msgid "Change:"
msgstr "Modifica:"
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "redirigi da"
+#: 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 parola chiave"
-#: contrib/redirects/models.py:8
+#: contrib/admin/templates/registration/password_reset_form.html:12
msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Un percorso assoluto, senza nome a dominio. Esempio: '/events/search/'."
+"Forgotten your password? Enter your e-mail address below, and we'll reset "
+"your password and e-mail the new one to you."
+msgstr "Dimenticata la parola chiave? Inserire il proprio indirizzo e-mail qui sotto: la parola chiave sarà reimpostata, e la nuova ti verrà inviata per e-mail."
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "redirigi verso"
+#: contrib/admin/templates/registration/password_reset_form.html:16
+msgid "E-mail address:"
+msgstr "Indirizzo e-mail:"
-#: contrib/redirects/models.py:10
+#: contrib/admin/templates/registration/password_reset_form.html:16
+msgid "Reset my password"
+msgstr "Reimposta la mia parola chiave"
+
+#: contrib/admin/templates/registration/password_reset_email.html:2
+msgid "You're receiving this e-mail because you requested a password reset"
+msgstr "Hai ricevuto questa e-mail perché hai chiesto di reimpostare la parola chiave"
+
+#: 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 parola chiave è: %(new_password)s"
+
+#: contrib/admin/templates/registration/password_reset_email.html:7
+msgid "Feel free to change this password by going to this page:"
+msgstr "Puoi liberamente cambiare la tua parola chiave tramite questa pagina:"
+
+#: 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 "Parola chiave reimpostata correttamente"
+
+#: contrib/admin/templates/registration/password_reset_done.html:12
msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Un percorso assoluto (come sopra) o un URL completo iniziante con 'http://'."
+"We've e-mailed a new password to the e-mail address you submitted. You "
+"should be receiving it shortly."
+msgstr "La nuova parola chiave è stata inviata all'indirizzo e-mail inserito. Arriverà a breve."
-#: contrib/redirects/models.py:12
-msgid "redirect"
-msgstr "redirigi"
+#: contrib/admin/templates/registration/password_change_form.html:4
+#: contrib/admin/templates/registration/password_change_form.html:6
+#: contrib/admin/templates/registration/password_change_form.html:10
+#: contrib/admin/templates/registration/password_change_done.html:4
+msgid "Password change"
+msgstr "Cambio di parola chiave"
-#: contrib/redirects/models.py:13
-msgid "redirects"
-msgstr "redirezioni"
+#: contrib/admin/templates/registration/password_change_form.html:12
+msgid ""
+"Please enter your old password, for security's sake, and then enter your new "
+"password twice so we can verify you typed it in correctly."
+msgstr "Inserire l'attuale parola chiave, per ragioni di sicurezza, e poi la nuova parola chiave due volte, per verificare di averla scritta correttamente."
+
+#: contrib/admin/templates/registration/password_change_form.html:17
+msgid "Old password:"
+msgstr "Parola chiave attuale:"
+
+#: contrib/admin/templates/registration/password_change_form.html:19
+msgid "New password:"
+msgstr "Nuova parola chiave:"
+
+#: contrib/admin/templates/registration/password_change_form.html:21
+msgid "Confirm password:"
+msgstr "Confermare la parola chiave:"
+
+#: contrib/admin/templates/registration/password_change_form.html:23
+msgid "Change my password"
+msgstr "Modifica la mia parola chiave"
+
+#: contrib/admin/templates/registration/password_change_done.html:6
+#: contrib/admin/templates/registration/password_change_done.html:10
+msgid "Password change successful"
+msgstr "Cambio di parola chiave avvenuto correttamente"
+
+#: contrib/admin/templates/registration/password_change_done.html:12
+msgid "Your password was changed."
+msgstr "La parola chiave è 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/'. Attenzione alla barra ('/') iniziale e finale."
+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"
@@ -1115,11 +1602,9 @@ msgstr "nome modello"
#: contrib/flatpages/models.py:13
msgid ""
-"Example: 'flatpages/contact_page'. If this isn't provided, the system will "
-"use 'flatpages/default'."
-msgstr ""
-"Esempio: 'flatpages/contact_page'. Se non specificato, il sistema userà "
-"'flatpages/default'."
+"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"
@@ -1127,7 +1612,7 @@ 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 selezionata, solo gli utenti registrati potranno vedere la pagina."
+msgstr "Se selezionato, solo gli utenti che hanno effettuato l'accesso potranno vedere la pagina."
#: contrib/flatpages/models.py:18
msgid "flat page"
@@ -1137,184 +1622,409 @@ msgstr "pagina statica"
msgid "flat pages"
msgstr "pagine statiche"
-#: contrib/auth/models.py:13 contrib/auth/models.py:26
-msgid "name"
-msgstr "nome"
+#: contrib/redirects/models.py:7
+msgid "redirect from"
+msgstr "redirigi da"
-#: contrib/auth/models.py:15
-msgid "codename"
-msgstr "nome in codice"
+#: 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:17
-msgid "permission"
-msgstr "permesso"
+#: contrib/redirects/models.py:9
+msgid "redirect to"
+msgstr "redirigi verso"
-#: contrib/auth/models.py:18 contrib/auth/models.py:27
-msgid "permissions"
-msgstr "permessi"
+#: 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:29
-msgid "group"
-msgstr "gruppo"
+#: contrib/redirects/models.py:13
+msgid "redirect"
+msgstr "redirezione"
-#: contrib/auth/models.py:30 contrib/auth/models.py:65
-msgid "groups"
-msgstr "gruppi"
+#: contrib/redirects/models.py:14
+msgid "redirects"
+msgstr "redirezioni"
-#: contrib/auth/models.py:55
-msgid "username"
-msgstr "nome utente"
+#: contrib/comments/models.py:67 contrib/comments/models.py:166
+msgid "object ID"
+msgstr "ID dell'oggetto"
-#: contrib/auth/models.py:56
-msgid "first name"
-msgstr "nome"
+#: contrib/comments/models.py:68
+msgid "headline"
+msgstr "intestazione"
-#: contrib/auth/models.py:57
-msgid "last name"
-msgstr "cognome"
+#: contrib/comments/models.py:69 contrib/comments/models.py:90
+#: contrib/comments/models.py:167
+msgid "comment"
+msgstr "commento"
-#: contrib/auth/models.py:58
-msgid "e-mail address"
-msgstr "indirizzo e-mail"
+#: contrib/comments/models.py:70
+msgid "rating #1"
+msgstr "valutazione #1"
-#: contrib/auth/models.py:59
-msgid "password"
-msgstr "password"
+#: contrib/comments/models.py:71
+msgid "rating #2"
+msgstr "valutazione #2"
-#: contrib/auth/models.py:59
-msgid "Use '[algo]$[salt]$[hexdigest]'"
-msgstr "Usare '[algo]$[salt]$[hexdigest]'"
+#: contrib/comments/models.py:72
+msgid "rating #3"
+msgstr "valutazione #3"
-#: contrib/auth/models.py:60
-msgid "staff status"
-msgstr "staff"
+#: contrib/comments/models.py:73
+msgid "rating #4"
+msgstr "valutazione #4"
-#: contrib/auth/models.py:60
-msgid "Designates whether the user can log into this admin site."
-msgstr "Autorizza l'utente ad accedere a questo sito di amministrazione."
+#: contrib/comments/models.py:74
+msgid "rating #5"
+msgstr "valutazione #5"
-#: contrib/auth/models.py:61
-msgid "active"
-msgstr "attivo"
+#: contrib/comments/models.py:75
+msgid "rating #6"
+msgstr "valutazione #6"
-#: contrib/auth/models.py:62
-msgid "superuser status"
-msgstr "superuser"
+#: contrib/comments/models.py:76
+msgid "rating #7"
+msgstr "valutazione #7"
-#: contrib/auth/models.py:63
-msgid "last login"
-msgstr "ultimo accesso"
+#: contrib/comments/models.py:77
+msgid "rating #8"
+msgstr "valutazione #8"
-#: contrib/auth/models.py:64
-msgid "date joined"
-msgstr "iscritto da"
+#: contrib/comments/models.py:82
+msgid "is valid rating"
+msgstr "è una valutazione valida"
-#: contrib/auth/models.py:66
+#: contrib/comments/models.py:83 contrib/comments/models.py:169
+msgid "date/time submitted"
+msgstr "data/orario di inserimento"
+
+#: contrib/comments/models.py:84 contrib/comments/models.py:170
+msgid "is public"
+msgstr "è pubblico"
+
+#: contrib/comments/models.py:86
+msgid "is removed"
+msgstr "è rimosso"
+
+#: contrib/comments/models.py:86
msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
+"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\"."
+
+#: contrib/comments/models.py:91
+msgid "comments"
+msgstr "commenti"
+
+#: contrib/comments/models.py:131 contrib/comments/models.py:207
+msgid "Content object"
+msgstr "Oggetto con contenuto"
+
+#: 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 ""
-"In aggiunta ai permessi assegnati manualmente, l'utente riceverà anche tutti "
-"i permessi assegnati ad ogni gruppo cui appartiene."
+"Inserito da %(user)s il %(date)s\n"
+"\n"
+"%(comment)s\n"
+"\n"
+"http://%(domain)s%(url)s"
-#: contrib/auth/models.py:67
-msgid "user permissions"
-msgstr "permessi utente"
+#: contrib/comments/models.py:168
+msgid "person's name"
+msgstr "nome della persona"
-#: contrib/auth/models.py:70
-msgid "user"
-msgstr "utente"
+#: contrib/comments/models.py:171
+msgid "ip address"
+msgstr "indirizzo IP"
-#: contrib/auth/models.py:71
-msgid "users"
-msgstr "utenti"
+#: contrib/comments/models.py:173
+msgid "approved by staff"
+msgstr "approvato dallo staff"
-#: contrib/auth/models.py:76
-msgid "Personal info"
-msgstr "Informazioni personali"
+#: contrib/comments/models.py:176
+msgid "free comment"
+msgstr "commento libero"
-#: contrib/auth/models.py:77
-msgid "Permissions"
-msgstr "Permessi"
+#: contrib/comments/models.py:177
+msgid "free comments"
+msgstr "commenti liberi"
-#: contrib/auth/models.py:78
-msgid "Important dates"
-msgstr "Date importanti"
+#: contrib/comments/models.py:233
+msgid "score"
+msgstr "punteggio"
-#: contrib/auth/models.py:79
-msgid "Groups"
-msgstr "Gruppi"
+#: contrib/comments/models.py:234
+msgid "score date"
+msgstr "data punteggio"
-#: contrib/auth/models.py:219
-msgid "message"
-msgstr "messaggio"
+#: contrib/comments/models.py:237
+msgid "karma score"
+msgstr "livello karma"
-#: contrib/auth/forms.py:30
+#: contrib/comments/models.py:238
+msgid "karma scores"
+msgstr "livelli karma"
+
+#: contrib/comments/models.py:242
+#, python-format
+msgid "%(score)d rating by %(user)s"
+msgstr "valutazione: %(score)d da %(user)s"
+
+#: contrib/comments/models.py:258
+#, python-format
msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
+"This comment was flagged by %(user)s:\n"
+"\n"
+"%(text)s"
msgstr ""
-"Il browser non ha i cookie abilitati. Per accedere, è necessario abilitarli."
+"A questo commento è stato apposto un flag da %(user)s:\n"
+"\n"
+"%(text)s"
-#: contrib/contenttypes/models.py:25
-msgid "python model class name"
-msgstr "nome della classe modello in python"
+#: contrib/comments/models.py:265
+msgid "flag date"
+msgstr "data flag"
-#: contrib/contenttypes/models.py:28
-msgid "content type"
-msgstr "tipo di contenuto"
+#: contrib/comments/models.py:268
+msgid "user flag"
+msgstr "flag utente"
-#: contrib/contenttypes/models.py:29
-msgid "content types"
-msgstr "tipo di contenuti"
+#: contrib/comments/models.py:269
+msgid "user flags"
+msgstr "flag utente"
+
+#: contrib/comments/models.py:273
+#, python-format
+msgid "Flag by %r"
+msgstr "Flag da %r"
+
+#: contrib/comments/models.py:278
+msgid "deletion date"
+msgstr "data cancellazione"
+
+#: contrib/comments/models.py:280
+msgid "moderator deletion"
+msgstr "cancellazione da moderatore"
+
+#: contrib/comments/models.py:281
+msgid "moderator deletions"
+msgstr "cancellazioni da moderatore"
+
+#: contrib/comments/models.py:285
+#, python-format
+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/sessions/models.py:35
+#: 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 parola chiave?"
+
+#: contrib/comments/templates/comments/form.html:12
+msgid "Ratings"
+msgstr "Valutazioni"
+
+#: contrib/comments/templates/comments/form.html:12
+#: contrib/comments/templates/comments/form.html:23
+msgid "Required"
+msgstr "Obbligatorio"
+
+#: contrib/comments/templates/comments/form.html:12
+#: contrib/comments/templates/comments/form.html:23
+msgid "Optional"
+msgstr "Facoltativo"
+
+#: contrib/comments/templates/comments/form.html:23
+msgid "Post a photo"
+msgstr "Invia una foto"
+
+#: contrib/comments/templates/comments/form.html:28
+#: contrib/comments/templates/comments/freeform.html:5
+msgid "Comment:"
+msgstr "Commento:"
+
+#: contrib/comments/templates/comments/form.html:35
+#: contrib/comments/templates/comments/freeform.html:10
+msgid "Preview comment"
+msgstr "Anteprima commento"
+
+#: contrib/comments/templates/comments/freeform.html:4
+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/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/sessions/models.py:51
msgid "session key"
msgstr "chiave di sessione"
-#: contrib/sessions/models.py:36
+#: contrib/sessions/models.py:52
msgid "session data"
msgstr "dati di sessione"
-#: contrib/sessions/models.py:37
+#: contrib/sessions/models.py:53
msgid "expire date"
msgstr "data di scadenza"
-#: contrib/sessions/models.py:41
+#: contrib/sessions/models.py:57
msgid "session"
msgstr "sessione"
-#: contrib/sessions/models.py:42
+#: contrib/sessions/models.py:58
msgid "sessions"
msgstr "sessioni"
-#: contrib/sites/models.py:10
-msgid "domain name"
-msgstr "nome a dominio"
+#: contrib/contenttypes/models.py:26
+msgid "python model class name"
+msgstr "nome della classe modello in Python"
-#: contrib/sites/models.py:11
-msgid "display name"
-msgstr "nome visualizzato"
+#: contrib/contenttypes/models.py:29
+msgid "content type"
+msgstr "content type"
-#: contrib/sites/models.py:15
-msgid "site"
-msgstr "sito"
+#: contrib/contenttypes/models.py:30
+msgid "content types"
+msgstr "content type"
-#: contrib/sites/models.py:16
-msgid "sites"
-msgstr "siti"
+#: 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] "Assicurarsi che il testo sia più corto di %s carattere."
+msgstr[1] "Assicurarsi che il testo sia più corto di %s caratteri."
-#: utils/translation.py:360
-msgid "DATE_FORMAT"
-msgstr "j F Y"
+#: oldforms/__init__.py:392
+msgid "Line breaks are not allowed here."
+msgstr "Non sono ammessi a capo manuali."
-#: utils/translation.py:361
-msgid "DATETIME_FORMAT"
-msgstr "j F Y, H:i"
+#: 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 "Selezionare un'opzione valida; '%(data)s' non presente in %(choices)s."
-#: utils/translation.py:362
-msgid "TIME_FORMAT"
-msgstr "H:i"
+#: oldforms/__init__.py:669
+msgid "The submitted file is empty."
+msgstr "Il file inviato è vuoto."
+
+#: oldforms/__init__.py:725
+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
+msgid "Enter a positive number."
+msgstr "Inserire un numero positivo."
+
+#: oldforms/__init__.py:745
+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."
+
+#: views/generic/create_update.py:117
+#, python-format
+msgid "The %(verbose_name)s was updated successfully."
+msgstr "%(verbose_name)s è stato aggiornato correttamente."
+
+#: views/generic/create_update.py:184
+#, python-format
+msgid "The %(verbose_name)s was deleted."
+msgstr "%(verbose_name)s è stato cancellato."
#: utils/dates.py:6
msgid "Monday"
@@ -1504,467 +2214,84 @@ msgid_plural "minutes"
msgstr[0] "minuto"
msgstr[1] "minuti"
-#: conf/global_settings.py:37
-msgid "Bengali"
-msgstr "Bengali"
-
-#: conf/global_settings.py:38
-msgid "Czech"
-msgstr "Ceco"
-
-#: conf/global_settings.py:39
-msgid "Welsh"
-msgstr "Gallese"
-
-#: conf/global_settings.py:40
-msgid "Danish"
-msgstr "Danese"
-
-#: conf/global_settings.py:41
-msgid "German"
-msgstr "Tedesco"
-
-#: conf/global_settings.py:42
-msgid "Greek"
-msgstr "Greco"
-
-#: conf/global_settings.py:43
-msgid "English"
-msgstr "Inglese"
-
-#: conf/global_settings.py:44
-msgid "Spanish"
-msgstr "Spagnolo"
-
-#: conf/global_settings.py:45
-msgid "French"
-msgstr "Francese"
-
-#: conf/global_settings.py:46
-msgid "Galician"
-msgstr "Galiziano"
-
-#: conf/global_settings.py:47
-msgid "Hungarian"
-msgstr "Ungherese"
-
-#: conf/global_settings.py:48
-msgid "Hebrew"
-msgstr "Ebreo"
-
-#: conf/global_settings.py:49
-msgid "Icelandic"
-msgstr "Islandese"
-
-#: conf/global_settings.py:50
-msgid "Italian"
-msgstr "Italiano"
-
-#: conf/global_settings.py:51
-msgid "Japanese"
-msgstr "Giapponese"
-
-#: conf/global_settings.py:52
-msgid "Dutch"
-msgstr "Olandese"
-
-#: conf/global_settings.py:53
-msgid "Norwegian"
-msgstr "Norvegese"
-
-#: conf/global_settings.py:54
-msgid "Brazilian"
-msgstr "Brasiliano"
-
-#: conf/global_settings.py:55
-msgid "Romanian"
-msgstr "Rumeno"
-
-#: conf/global_settings.py:56
-msgid "Russian"
-msgstr "Russo"
-
-#: conf/global_settings.py:57
-msgid "Slovak"
-msgstr "Slovacco"
-
-#: conf/global_settings.py:58
-msgid "Slovenian"
-msgstr "Sloveno"
-
-#: conf/global_settings.py:59
-msgid "Serbian"
-msgstr "Serbo"
-
-#: conf/global_settings.py:60
-msgid "Swedish"
-msgstr "Svedese"
-
-#: conf/global_settings.py:61
-msgid "Ukrainian"
-msgstr "Ucraino"
-
-#: conf/global_settings.py:62
-msgid "Simplified Chinese"
-msgstr "Cinese semplificato"
-
-#: conf/global_settings.py:63
-msgid "Traditional Chinese"
-msgstr "Cinese tradizionale"
-
-#: core/validators.py:60
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Sono ammesse solo lettere, numeri e sottolineature ('_')."
-
-#: core/validators.py:64
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr "Sono ammesse solo lettere, numeri, sottolineature ('_'), trattini"
-"('-') e barre ('/')."
-
-#: core/validators.py:72
-msgid "Uppercase letters are not allowed here."
-msgstr "Non sono ammesse lettere maiuscole."
-
-#: core/validators.py:76
-msgid "Lowercase letters are not allowed here."
-msgstr "Non sono ammesse lettere minuscole."
-
-#: core/validators.py:83
-msgid "Enter only digits separated by commas."
-msgstr "Inserire solo numeri separati da virgole."
-
-#: core/validators.py:95
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Inserire indirizzi e-mail validi separati da virgole."
-
-#: core/validators.py:99
-msgid "Please enter a valid IP address."
-msgstr "Inserire un indirizzo IP valido."
-
-#: core/validators.py:103
-msgid "Empty values are not allowed here."
-msgstr "E' necessario inserire un valore."
-
-#: core/validators.py:107
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Sono ammessi soltanto caratteri numerici."
-
-#: core/validators.py:111
-msgid "This value can't be comprised solely of digits."
-msgstr "Il valore non può essere composto solo da cifre."
-
-#: core/validators.py:116
-msgid "Enter a whole number."
-msgstr "Inserire un numero."
-
-#: core/validators.py:120
-msgid "Only alphabetical characters are allowed here."
-msgstr "Sono ammessi solo caratteri alfabetici."
-
-#: core/validators.py:124
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Inserire un data valida in formato AAAA-MM-GG."
-
-#: core/validators.py:128
-msgid "Enter a valid time in HH:MM format."
-msgstr "Inserire un orario valido in formato OO: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 "Inserire una data/ora in formato AAAA-MM-GG OO:MM."
-
-#: core/validators.py:136
-msgid "Enter a valid e-mail address."
-msgstr "Inserire un indirizzo e-mail valido."
-
-#: core/validators.py:148
-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 inserito non è un'immagine o è corrotto."
-
-#: core/validators.py:155
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "L'URL %s non punta ad un'immagine valida."
-
-#: core/validators.py:159
-#, 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:167
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "L'URL %s non punta ad un video QuickTime valido."
-
-#: core/validators.py:171
-msgid "A valid URL is required."
-msgstr "Inserire un URL valido."
-
-#: core/validators.py:185
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"E' richiesto HTML valido. Gli errori sono i seguenti:\n"
-"%s"
-
-#: core/validators.py:192
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "XML malformato: %s"
-
-#: core/validators.py:202
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "URL non valida: %s"
-
-#: core/validators.py:206 core/validators.py:208
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "L'URL %s è un link rotto."
-
-#: core/validators.py:214
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Inserire un nome di stato americano abbreviato valido."
-
-#: 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] "Attenzione! La parola %s non è ammessa."
-msgstr[1] "Attenzione! Le parole %s non sono ammesse."
-
-#: core/validators.py:236
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Questo campo deve corrispondere al campo '%s'."
-
-#: core/validators.py:255
-msgid "Please enter something for at least one field."
-msgstr "Inserire qualcosa in almeno un campo."
-
-#: core/validators.py:264 core/validators.py:275
-msgid "Please enter both fields or leave them both empty."
-msgstr "Inserire entrambi i campi o lasciarli entrambi vuoti."
-
-#: core/validators.py:282
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Il campo è obbligatorio se %(field)s è %(value)s"
-
-#: core/validators.py:294
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Il campo è obbligatorio se %(field)s non è %(value)s"
-
-#: core/validators.py:313
-msgid "Duplicate values are not allowed."
-msgstr "Non sono ammessi valori duplicati."
-
-#: core/validators.py:336
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Il valore deve essere una potenza di %s."
-
-#: core/validators.py:347
-msgid "Please enter a valid decimal number."
-msgstr "Inserire un numero decimale valido."
-
-#: 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] "Inserire un numero decimale con non più di %s cifra."
-msgstr[1] "Inserire un numero decimale con non più di %s cifre totali."
-
-#: 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] "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:362
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Verifica che il file inserito sia almeno di %s byte."
-
-#: core/validators.py:363
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Verifica che il file inserito sia al massimo %s byte."
-
-#: core/validators.py:376
-msgid "The format for this field is wrong."
-msgstr "Formato del file non valido."
-
-#: core/validators.py:391
-msgid "This field is invalid."
-msgstr "Il campo non è valido."
-
-#: core/validators.py:426
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Impossibile recuperare alcunché da %s."
+#: utils/translation/trans_real.py:362
+msgid "DATE_FORMAT"
+msgstr "j F Y"
-#: core/validators.py:429
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-"L'URL %(url)s restituisce un Content-Type header non valido '%(contenttype)s'."
+#: utils/translation/trans_real.py:363
+msgid "DATETIME_FORMAT"
+msgstr "j F Y, H:i"
-#: core/validators.py:462
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"Il tag %(tag)s alla linea %(line)s non è chiuso. (La linea comincia con \"%(start)s\".)"
+#: utils/translation/trans_real.py:364
+msgid "TIME_FORMAT"
+msgstr "H:i"
-#: 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 ""
-"Il testo che comincia a linea %(line)s non e' ammesso in questo contesto. "
-"(La linea comincia con \"%(start)s\".)"
+#: utils/translation/trans_real.py:380
+msgid "YEAR_MONTH_FORMAT"
+msgstr "Y F"
-#: 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\" alla linea %(line)s è un attributo invalido. (La linea comincia "
-"con \"%(start)s\".)"
+#: utils/translation/trans_real.py:381
+msgid "MONTH_DAY_FORMAT"
+msgstr "F j"
-#: 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>\" alla linea %(line)s: tag non valido. (La linea comincia con \"%"
-"(start)s\".)"
+#: template/defaultfilters.py:490
+msgid "yes,no,maybe"
+msgstr "sì,no,forse"
-#: core/validators.py:480
+#: newforms/fields.py:101 newforms/fields.py:254
#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Un tag alla linea %(line)s manca di uno o più attributi richiesti. (La linea "
-"comincia con \"%(start)s\".)"
+msgid "Ensure this value has at most %d characters."
+msgstr "Assicurarsi che questo valore non contenga più di %d caratteri."
-#: core/validators.py:485
+#: newforms/fields.py:103 newforms/fields.py:256
#, 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\" alla linea %(line)s ha un valore non valido. (La "
-"linea comincia con \"%(start)s\".)"
+msgid "Ensure this value has at least %d characters."
+msgstr "Assicurarsi che questo valore contenga almeno %d caratteri."
-#: db/models/manipulators.py:302
+#: newforms/fields.py:128
#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(object)s·con questo·%(type)s·esistono già per questo·%(field)s."
+msgid "Ensure this value is less than or equal to %s."
+msgstr "Assicurarsi che questo valore sia minore o uguale a %s."
-#: core/meta/fields.py:60
-#: db/models/fields/__init__.py:40
+#: newforms/fields.py:130
#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s·con questo·%(fieldname)s·esiste già."
+msgid "Ensure this value is greater than or equal to %s."
+msgstr "Assicurarsi che questo valore sia maggiore o uguale a %s."
-#: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265
-#: db/models/fields/__init__.py:542 db/models/fields/__init__.py:553
-#: forms/__init__.py:346
-msgid "This field is required."
-msgstr "Il campo è obbligatorio."
+#: newforms/fields.py:163
+msgid "Enter a valid date."
+msgstr "Inserire una data valida."
-#: db/models/fields/__init__.py:337
-msgid "This value must be an integer."
-msgstr "Il valore deve essere un intero."
+#: newforms/fields.py:190
+msgid "Enter a valid time."
+msgstr "Inserire un orario valido."
-#: db/models/fields/__init__.py:369
-msgid "This value must be either True or False."
-msgstr "Il valore deve essere True o False."
+#: newforms/fields.py:226
+msgid "Enter a valid date/time."
+msgstr "Inserire una coppia data/orario valida."
-#: db/models/fields/__init__.py:385
-msgid "This field cannot be null."
-msgstr "Il campo non può essere nullo."
+#: newforms/fields.py:240
+msgid "Enter a valid value."
+msgstr "Inserire un valore valido."
-#: db/models/fields/__init__.py:562
-msgid "Enter a valid filename."
-msgstr "Inserire un nome file valido."
+#: newforms/fields.py:287 newforms/fields.py:309
+msgid "Enter a valid URL."
+msgstr "Inserire una URL valida."
-#: db/models/fields/related.py:43
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Inserire un %s valido."
-
-#: db/models/fields/related.py:579
-msgid "Separate multiple IDs with commas."
-msgstr "Separa ID multipli con virgole."
-
-#: db/models/fields/related.py:581
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr " Premi \"Control\", o \"Command\" su Mac, per selezionarne più di uno."
-
-#: 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] "Inserire un ID valido per %(self)s. Il valore %(value)r non è valido."
-msgstr[1] "Inserire un ID valido per %(self)s. I valori %(value)r non sono validi."
+#: newforms/fields.py:311
+msgid "This URL appears to be a broken link."
+msgstr "Questa URL non sembra funzionare."
-#: 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] "Assicurati che il testo sia più corto di %s carattere."
-msgstr[1] "Assicurati che il testo sia più corto di %s caratteri."
+#: 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."
-#: forms/__init__.py:385
-msgid "Line breaks are not allowed here."
-msgstr "Non è ammesso andare a capo."
+#: newforms/fields.py:378 newforms/fields.py:454 newforms/models.py:181
+msgid "Enter a list of values."
+msgstr "Inserire una lista di valori."
-#: forms/__init__.py:480 forms/__init__.py:551 forms/__init__.py:589
+#: newforms/fields.py:387 newforms/models.py:187
#, 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."
-
-#: forms/__init__.py:645
-msgid "The submitted file is empty."
-msgstr "Il file sottomesso è vuoto."
-
-#: forms/__init__.py:699
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Inserire un numero tra -32768 e 32767."
-
-#: forms/__init__.py:708
-msgid "Enter a positive number."
-msgstr "Inserire un numero positivo."
-
-#: forms/__init__.py:717
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Inserire un numero compreso tra 0 e 32767."
-
-#: template/defaultfilters.py:379
-msgid "yes,no,maybe"
-msgstr "sì,no,forse"
+msgid "Select a valid choice. %s is not one of the available choices."
+msgstr "Selezionare un'opzione valida;'%s non compare tra quelle disponibili."
diff --git a/django/conf/locale/it/LC_MESSAGES/djangojs.mo b/django/conf/locale/it/LC_MESSAGES/djangojs.mo
index 2df21b6558..c34009f148 100644
--- a/django/conf/locale/it/LC_MESSAGES/djangojs.mo
+++ b/django/conf/locale/it/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/django/conf/locale/it/LC_MESSAGES/djangojs.po b/django/conf/locale/it/LC_MESSAGES/djangojs.po
index 4b68decff2..4f01cd04a0 100644
--- a/django/conf/locale/it/LC_MESSAGES/djangojs.po
+++ b/django/conf/locale/it/LC_MESSAGES/djangojs.po
@@ -1,20 +1,39 @@
+# translation of djangojs.po to Italiano
# Italian translation for the django-admin JS files
# Copyright (C) 2006 the Lawrence Journal-World
# This file is distributed under the same license as the Django package.
-# Carlo C8E Miron <carlo.miron AT gmail.com>, 2006.
#
+# Carlo C8E Miron <carlo.miron AT gmail.com>, 2006.
+# Nicola 'tekNico' Larosa <nico@tekNico.net>, 2007.
msgid ""
msgstr ""
-"Project-Id-Version: Django JavaScript 1.0\n"
+"Project-Id-Version: djangojs\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-12-09 11:51+0100\n"
-"PO-Revision-Date: 2005-12-04 21:47+0100\n"
-"Last-Translator: Carlo C8E Miron <carlo.miron AT gmail.com>\n"
-"Language-Team: Italian <Django-I18N@googlegroups.com>\n"
+"POT-Creation-Date: 2007-02-26 20:46+0100\n"
+"PO-Revision-Date: 2007-02-26 20:55+0100\n"
+"Last-Translator: Nicola Larosa <nico@tekNico.net>\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"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: KBabel 1.11.2\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 ""
+"Gennaio Febbraio Marzo Aprile Maggio Giugno Luglio Agosto Settembre Ottobre "
+"Novembre Dicembre"
+
+#: contrib/admin/media/js/calendar.js:25
+msgid "S M T W T F S"
+msgstr "D L M M G V S"
+
+#: contrib/admin/media/js/dateparse.js:33
+msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
+msgstr "Domenica Lunedì Martedì Mercoledì Giovedì Venerdì Sabato"
#: contrib/admin/media/js/SelectFilter2.js:33
#, perl-format
@@ -23,7 +42,7 @@ msgstr "Disponibile %s"
#: contrib/admin/media/js/SelectFilter2.js:41
msgid "Choose all"
-msgstr "Seleziona tutto"
+msgstr "Scegli tutto"
#: contrib/admin/media/js/SelectFilter2.js:46
msgid "Add"
@@ -36,7 +55,7 @@ msgstr "Rimuovi"
#: contrib/admin/media/js/SelectFilter2.js:53
#, perl-format
msgid "Chosen %s"
-msgstr "Selezionato %s"
+msgstr "Scelto %s"
#: contrib/admin/media/js/SelectFilter2.js:54
msgid "Select your choice(s) and click "
@@ -46,66 +65,59 @@ msgstr "Seleziona le tue scelte e clicca "
msgid "Clear all"
msgstr "Cancella tutto"
-#: 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 ""
-"Gennaio Febbraio Marzo Aprile Maggio Giugno Luglio Agosto Settembre Ottobre "
-"Novembre Dicembre"
-
-#: contrib/admin/media/js/dateparse.js:27
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Domenica Lunedì Martedì Mercoledì Giovedì Venerdì Sabato"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "D L M M G V S"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
msgid "Now"
msgstr "Adesso"
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
msgid "Clock"
msgstr "Orologio"
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
msgid "Choose a time"
-msgstr "Seleziona un orario"
+msgstr "Scegli un orario"
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
msgid "Midnight"
msgstr "Mezzanotte"
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
msgid "6 a.m."
msgstr "6 del mattino"
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
msgid "Noon"
msgstr "Mezzogiorno"
-#: 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 "Annulla"
-#: 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 "Oggi"
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
msgid "Calendar"
msgstr "Calendario"
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
msgid "Yesterday"
msgstr "Ieri"
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
msgid "Tomorrow"
msgstr "Domani"
+
+#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
+#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
+msgid "Show"
+msgstr "Mostra"
+
+#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
+msgid "Hide"
+msgstr "Nascondi"
+
diff --git a/django/conf/locale/ja/LC_MESSAGES/django.mo b/django/conf/locale/ja/LC_MESSAGES/django.mo
index e6725c1140..97b8f4145b 100644
--- a/django/conf/locale/ja/LC_MESSAGES/django.mo
+++ b/django/conf/locale/ja/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/ja/LC_MESSAGES/django.po b/django/conf/locale/ja/LC_MESSAGES/django.po
index a55af3b45d..46700505ba 100644
--- a/django/conf/locale/ja/LC_MESSAGES/django.po
+++ b/django/conf/locale/ja/LC_MESSAGES/django.po
@@ -1,13 +1,13 @@
# Translation of django.po to japanese.
# Copyright (C) 2005,2006 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
-# makoto tsuyuki <mtsuyuki@gmail.com>, 2005,2006.
+# makoto tsuyuki <mtsuyuki@gmail.com>, 2005,2006,2007.
#
msgid ""
msgstr ""
"Project-Id-Version: Django 1.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-10-21 20:42+0900\n"
+"POT-Creation-Date: 2007-02-15 23:43+0900\n"
"PO-Revision-Date: 2006-05-18 00:28+0900\n"
"Last-Translator: makoto tsuyuki <mtsuyuki@gmail.com>\n"
"Language-Team: Japanese <django-ja@googlegroups.com>\n"
@@ -24,126 +24,138 @@ 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 "Latvian"
+msgstr "ラトビア語"
+
+#: conf/global_settings.py:59
+msgid "Macedonian"
+msgstr "マケドニア語"
+
+#: conf/global_settings.py:60
msgid "Dutch"
msgstr "オランダ語"
-#: conf/global_settings.py:58
+#: conf/global_settings.py:61
msgid "Norwegian"
msgstr "ノルウェー語"
-#: conf/global_settings.py:59
+#: conf/global_settings.py:62
msgid "Polish"
msgstr "ポーランド語"
-#: conf/global_settings.py:60
+#: conf/global_settings.py:63
msgid "Brazilian"
msgstr "ブラジル語"
-#: conf/global_settings.py:61
+#: conf/global_settings.py:64
msgid "Romanian"
msgstr "ルーマニア語"
-#: conf/global_settings.py:62
+#: conf/global_settings.py:65
msgid "Russian"
msgstr "ロシア語"
-#: conf/global_settings.py:63
+#: conf/global_settings.py:66
msgid "Slovak"
msgstr "スロバキア語"
-#: conf/global_settings.py:64
+#: conf/global_settings.py:67
msgid "Slovenian"
msgstr "スロヴェニア語"
-#: conf/global_settings.py:65
+#: conf/global_settings.py:68
msgid "Serbian"
msgstr "セルビア語"
-#: conf/global_settings.py:66
+#: conf/global_settings.py:69
msgid "Swedish"
msgstr "スウェーデン語"
-#: conf/global_settings.py:67
+#: conf/global_settings.py:70
msgid "Tamil"
msgstr "タミル語"
-#: conf/global_settings.py:68
+#: conf/global_settings.py:71
msgid "Turkish"
msgstr "トルコ語"
-#: conf/global_settings.py:69
+#: conf/global_settings.py:72
msgid "Ukrainian"
msgstr "ウクライナ語"
-#: conf/global_settings.py:70
+#: conf/global_settings.py:73
msgid "Simplified Chinese"
msgstr "簡体字中国語"
-#: conf/global_settings.py:71
+#: conf/global_settings.py:74
msgid "Traditional Chinese"
msgstr "繁体字中国語"
@@ -181,15 +193,18 @@ msgstr "今月"
msgid "This year"
msgstr "今年"
-#: contrib/admin/filterspecs.py:143
+#: contrib/admin/filterspecs.py:143 newforms/widgets.py:170
+#: oldforms/__init__.py:572
msgid "Yes"
msgstr "はい"
-#: contrib/admin/filterspecs.py:143
+#: contrib/admin/filterspecs.py:143 newforms/widgets.py:170
+#: oldforms/__init__.py:572
msgid "No"
msgstr "いいえ"
-#: contrib/admin/filterspecs.py:150
+#: contrib/admin/filterspecs.py:150 newforms/widgets.py:170
+#: oldforms/__init__.py:572
msgid "Unknown"
msgstr "不明"
@@ -237,6 +252,7 @@ msgstr "申し訳ありませんが、お探しのページは見つかりませ
#: 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
@@ -275,6 +291,7 @@ msgstr "ようこそ"
#: 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
@@ -286,6 +303,9 @@ msgstr "ドキュメント"
#: 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
@@ -306,6 +326,7 @@ msgstr "パスワードの変更"
#: 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
@@ -335,30 +356,31 @@ msgstr "Django 管理サイト"
msgid "Add"
msgstr "追加"
-#: contrib/admin/templates/admin/change_form.html:20
+#: 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:21
+#: contrib/admin/templates/admin/change_form.html:22
msgid "View on site"
msgstr "サイト上で表示"
-#: 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] "下記のエラーを修正してください。"
msgstr[1] "下記のエラーを修正してください。"
-#: contrib/admin/templates/admin/change_form.html:48
+#: contrib/admin/templates/admin/change_form.html:50
msgid "Ordering"
msgstr "順序"
-#: contrib/admin/templates/admin/change_form.html:51
+#: contrib/admin/templates/admin/change_form.html:53
msgid "Order:"
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 を追加"
@@ -451,10 +473,6 @@ msgstr "ユーザ名:"
msgid "Password:"
msgstr "パスワード:"
-#: contrib/admin/templates/admin/login.html:22
-msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-msgstr "<a href=\"/password_reset/\">パスワードをお忘れですか</a>?"
-
#: contrib/admin/templates/admin/login.html:25
#: contrib/admin/views/decorators.py:24
msgid "Log in"
@@ -533,17 +551,25 @@ 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 <strong>%(username)s</strong>."
+msgstr "<strong>%(username)s</strong>さんの新しいパスワードを入力してください。"
+
#: contrib/admin/templates/admin_doc/bookmarklets.html:3
msgid "Bookmarklets"
msgstr "ブックマークレット"
@@ -743,25 +769,34 @@ msgstr "現在:"
msgid "Change:"
msgstr "変更:"
-#: contrib/admin/templatetags/admin_list.py:230
+#: contrib/admin/templatetags/admin_list.py:238
msgid "All dates"
msgstr "いつでも"
-#: contrib/admin/views/auth.py:17 contrib/admin/views/main.py:257
+#: contrib/admin/views/auth.py:19 contrib/admin/views/main.py:257
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr "%(name)s \"%(obj)s\" を追加しました。"
-#: contrib/admin/views/auth.py:22 contrib/admin/views/main.py:261
+#: contrib/admin/views/auth.py:24 contrib/admin/views/main.py:261
#: contrib/admin/views/main.py:347
msgid "You may edit it again below."
msgstr "続けて編集できます。"
-#: contrib/admin/views/auth.py:28
+#: contrib/admin/views/auth.py:30
msgid "Add user"
msgstr "ユーザを追加"
-#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:59
+#: 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/decorators.py:10 contrib/auth/forms.py:60
msgid ""
"Please enter a correct username and password. Note that both fields are case-"
"sensitive."
@@ -949,7 +984,7 @@ msgid "Added %s."
msgstr "%s を追加しました。"
#: contrib/admin/views/main.py:335 contrib/admin/views/main.py:337
-#: contrib/admin/views/main.py:339
+#: contrib/admin/views/main.py:339 db/models/manipulators.py:306
msgid "and"
msgstr "と"
@@ -1021,15 +1056,15 @@ msgstr "変更する %s を選択"
msgid "Database error"
msgstr "データベースエラー"
-#: contrib/auth/forms.py:16
+#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
msgid "The two password fields didn't match."
msgstr "確認用パスワードが一致しません。"
-#: contrib/auth/forms.py:24
+#: contrib/auth/forms.py:25
msgid "A user with that username already exists."
msgstr "同じユーザ名が既に登録済みです。"
-#: contrib/auth/forms.py:52
+#: contrib/auth/forms.py:53
msgid ""
"Your Web browser doesn't appear to have cookies enabled. Cookies are "
"required for logging in."
@@ -1037,21 +1072,21 @@ msgstr ""
"お使いのブラウザはクッキーを有効にしていないようです。ログインにはクッキーが"
"必要です。"
-#: contrib/auth/forms.py:61
+#: contrib/auth/forms.py:62
msgid "This account is inactive."
msgstr "アカウントが無効です。"
-#: contrib/auth/forms.py:84
+#: 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:116
+#: contrib/auth/forms.py:117
msgid "The two 'new password' fields didn't match."
msgstr "新しいパスワード(確認用)が一致しません。"
-#: contrib/auth/forms.py:123
+#: contrib/auth/forms.py:124
msgid "Your old password was entered incorrectly. Please enter it again."
msgstr "元のパスワードが間違っています。もう一度入力してください。"
@@ -1108,8 +1143,12 @@ msgid "password"
msgstr "パスワード"
#: contrib/auth/models.py:94
-msgid "Use '[algo]$[salt]$[hexdigest]'"
-msgstr "'[アルゴリズム]$[ソルト]$[ダイジェスト(hex)]' 形式を使って下さい"
+msgid ""
+"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
+"password form</a>."
+msgstr ""
+"'[algo]$[salt]$[hexdigest]'形式か、"
+"<a href=\"password/\">パスワード変更フォーム</a>を使ってください。"
#: contrib/auth/models.py:95
msgid "staff status"
@@ -1478,15 +1517,15 @@ msgstr "コメント ID が不正です"
msgid "No voting for yourself"
msgstr "自分には投票できません。"
-#: contrib/contenttypes/models.py:20
+#: contrib/contenttypes/models.py:26
msgid "python model class name"
msgstr "Python モデルクラス名"
-#: contrib/contenttypes/models.py:23
+#: contrib/contenttypes/models.py:29
msgid "content type"
msgstr "コンテンツタイプ"
-#: contrib/contenttypes/models.py:24
+#: contrib/contenttypes/models.py:30
msgid "content types"
msgstr "コンテンツタイプ"
@@ -1536,6 +1575,10 @@ msgstr "フラットページ"
msgid "flat pages"
msgstr "フラットページ"
+#: contrib/localflavor/usa/forms.py:13
+msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
+msgstr "XXXXXか、XXXXX-XXXXの形式で郵便番号を入力してください。"
+
#: contrib/redirects/models.py:7
msgid "redirect from"
msgstr "リダイレクト元"
@@ -1600,92 +1643,92 @@ msgstr "サイト"
msgid "sites"
msgstr "サイト"
-#: core/validators.py:63
+#: 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:71
+#: core/validators.py:72
msgid "This value must contain only letters, numbers, underscores or hyphens."
msgstr "半角の英数字、アンダースコア、ハイフン以外は使用できません。"
-#: core/validators.py:75
+#: 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
+#: core/validators.py:120 newforms/fields.py:126
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:138
+#: core/validators.py:139
msgid "Year must be 1900 or later."
msgstr "1900年以降を指定してください。"
-#: core/validators.py:142
+#: core/validators.py:143
#, python-format
msgid "Invalid date: %s."
msgstr "無効な日付: %s"
-#: core/validators.py:146 db/models/fields/__init__.py:424
+#: core/validators.py:147 db/models/fields/__init__.py:454
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "YYYY-MM-DD形式で日付を入力してください。"
-#: core/validators.py:151
+#: core/validators.py:152
msgid "Enter a valid time in HH:MM format."
msgstr "HH:MM形式で時刻を入力してください。"
-#: core/validators.py:155 db/models/fields/__init__.py:486
+#: core/validators.py:156 db/models/fields/__init__.py:521
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr "YYYY-MM-DD HH:MM形式で日時を入力してください。"
-#: core/validators.py:160
+#: core/validators.py:161 newforms/fields.py:269
msgid "Enter a valid e-mail address."
msgstr "有効なメールアドレスを入力してください。"
-#: core/validators.py:172 core/validators.py:401 forms/__init__.py:662
+#: core/validators.py:173 core/validators.py:442 oldforms/__init__.py:667
msgid "No file was submitted. Check the encoding type on the form."
msgstr ""
"ファイルが取得できませんでした。formのencoding typeを確認してください。"
-#: core/validators.py:176
+#: core/validators.py:177
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
@@ -1693,26 +1736,26 @@ msgstr ""
"画像をアップロードしてください。アップロードした画像は画像でないか、または壊"
"れています。"
-#: core/validators.py:183
+#: core/validators.py:184
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr "URL ( %s ) は画像ではありません。"
-#: core/validators.py:187
+#: 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:195
+#: core/validators.py:196
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr "URL ( %s ) は QuickTime ビデオではありません。"
-#: core/validators.py:199
+#: core/validators.py:200
msgid "A valid URL is required."
msgstr "正しい URL を入力してください。"
-#: core/validators.py:213
+#: core/validators.py:214
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
@@ -1721,71 +1764,86 @@ msgstr ""
"有効な HTML を入力してください。エラー:\n"
"%s"
-#: core/validators.py:220
+#: core/validators.py:221
#, python-format
msgid "Badly formed XML: %s"
msgstr "不正な XML です: %s"
-#: core/validators.py:230
+#: core/validators.py:238
#, python-format
msgid "Invalid URL: %s"
msgstr "無効なURL: %s"
-#: core/validators.py:234 core/validators.py:236
+#: core/validators.py:243 core/validators.py:245
#, python-format
msgid "The URL %s is a broken link."
msgstr "URL ( %s ) はリンクが壊れています。"
-#: core/validators.py:242
+#: core/validators.py:251
msgid "Enter a valid U.S. state abbreviation."
msgstr "正しい米州略称を入力してください。"
-#: core/validators.py:256
+#: 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:263
+#: core/validators.py:272
#, python-format
msgid "This field must match the '%s' field."
msgstr "このフィールドは '%s' フィールドと一致せねばなりません。"
-#: core/validators.py:282
+#: core/validators.py:291
msgid "Please enter something for at least one field."
msgstr "少なくとも一つのフィールドに何か入力してください。"
-#: core/validators.py:291 core/validators.py:302
+#: core/validators.py:300 core/validators.py:311
msgid "Please enter both fields or leave them both empty."
msgstr "両方のフィールドに入力するか、両方とも未入力にしてください。"
-#: core/validators.py:309
+#: 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:321
+#: 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:340
+#: core/validators.py:349
msgid "Duplicate values are not allowed."
msgstr "重複する値は認められません。"
-#: core/validators.py:363
+#: 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:374
+#: core/validators.py:415
msgid "Please enter a valid decimal number."
msgstr "有効な 10 進数を入力してください。"
-#: core/validators.py:378
+#: core/validators.py:419
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
@@ -1793,7 +1851,7 @@ msgid_plural ""
msgstr[0] "全体で %s 文字以下の数字を入力してください。"
msgstr[1] "全体で %s 文字以下の数字を入力してください。"
-#: core/validators.py:381
+#: core/validators.py:422
#, python-format
msgid ""
"Please enter a valid decimal number with a whole part of at most %s digit."
@@ -1802,7 +1860,7 @@ msgid_plural ""
msgstr[0] "整数部は %s 文字以下の数字を入力してください。"
msgstr[1] "整数部は %s 文字以下の数字を入力してください。"
-#: core/validators.py:384
+#: core/validators.py:425
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
@@ -1810,37 +1868,37 @@ msgid_plural ""
msgstr[0] "小数部は %s 文字以下の数字を入力してください。"
msgstr[1] "小数部は %s 文字以下の数字を入力してください。"
-#: core/validators.py:394
+#: core/validators.py:435
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr "アップロードするファイルの大きさは %s バイト以上にしてください。"
-#: core/validators.py:395
+#: core/validators.py:436
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr "アップロードするファイルの大きさは %s 最大バイトまでです。"
-#: core/validators.py:412
+#: core/validators.py:453
msgid "The format for this field is wrong."
msgstr "フィールドの形式が正しくありません。"
-#: core/validators.py:427
+#: core/validators.py:468
msgid "This field is invalid."
msgstr "このフィールドは無効です。"
-#: core/validators.py:463
+#: core/validators.py:504
#, python-format
msgid "Could not retrieve anything from %s."
msgstr "%s から何も検索できませんでした。"
-#: core/validators.py:466
+#: core/validators.py:507
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr ""
"URL %(url)s は無効なコンテンツタイプヘッダ '%(contenttype)s' を返しました。"
-#: core/validators.py:499
+#: core/validators.py:540
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
@@ -1849,7 +1907,7 @@ msgstr ""
"%(line)s 行目から始まる %(tag)s タグを閉じてください (\"%(start)s\" で始まる"
"行です)。"
-#: core/validators.py:503
+#: core/validators.py:544
#, python-format
msgid ""
"Some text starting on line %(line)s is not allowed in that context. (Line "
@@ -1858,7 +1916,7 @@ msgstr ""
"%(line)s 行目から始まるテキストはこのコンテキストでは使えません。 (\"%(start)"
"s\" で始まる行です)。"
-#: core/validators.py:508
+#: core/validators.py:549
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
@@ -1867,7 +1925,7 @@ msgstr ""
"%(line)s 行目の \"%(attr)s\" は無効なアトリビュートです (\"%(start)s\" で始ま"
"る行です)。"
-#: core/validators.py:513
+#: core/validators.py:554
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
@@ -1876,7 +1934,7 @@ msgstr ""
"%(line)s 行目の \"<%(tag)s>\" は無効なタグです( \"%(start)s\" で始まる行で"
"す)。"
-#: core/validators.py:517
+#: core/validators.py:558
#, python-format
msgid ""
"A tag on line %(line)s is missing one or more required attributes. (Line "
@@ -1885,7 +1943,7 @@ msgstr ""
"%(line)s 行目のタグは必須アトリビュートが未入力です( \"%(start)s\" で始まる行"
"です)。"
-#: core/validators.py:522
+#: core/validators.py:563
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
@@ -1900,50 +1958,51 @@ msgid "%(object)s with this %(type)s already exists for the given %(field)s."
msgstr ""
"%(field)s に入力されたものは、この %(type)s の %(object)s に既に存在します。"
-#: db/models/fields/__init__.py:41
+#: db/models/fields/__init__.py:42
#, python-format
msgid "%(optname)s with this %(fieldname)s already exists."
msgstr "%(fieldname)s に %(optname)s は既に存在します。"
-#: db/models/fields/__init__.py:115 db/models/fields/__init__.py:266
-#: db/models/fields/__init__.py:560 db/models/fields/__init__.py:571
-#: forms/__init__.py:347
+#: db/models/fields/__init__.py:116 db/models/fields/__init__.py:273
+#: db/models/fields/__init__.py:605 db/models/fields/__init__.py:616
+#: newforms/fields.py:78 newforms/fields.py:373 newforms/fields.py:449
+#: newforms/fields.py:460 oldforms/__init__.py:352
msgid "This field is required."
msgstr "このフィールドは必須です。"
-#: db/models/fields/__init__.py:349
+#: db/models/fields/__init__.py:366
msgid "This value must be an integer."
msgstr "値は整数でなければなりません。"
-#: db/models/fields/__init__.py:381
+#: db/models/fields/__init__.py:401
msgid "This value must be either True or False."
msgstr "値は真: True または偽: False でなければなりません。"
-#: db/models/fields/__init__.py:397
+#: db/models/fields/__init__.py:422
msgid "This field cannot be null."
msgstr "このフィールドには NULL を指定できません。"
-#: db/models/fields/__init__.py:580
+#: db/models/fields/__init__.py:625
msgid "Enter a valid filename."
msgstr "正しいファイル名を入力してください。"
-#: db/models/fields/related.py:51
+#: db/models/fields/related.py:53
#, python-format
msgid "Please enter a valid %s."
msgstr "正しい %s を入力してください。"
-#: db/models/fields/related.py:618
+#: db/models/fields/related.py:642
msgid "Separate multiple IDs with commas."
msgstr "複数の ID はカンマで区切ってください。"
-#: db/models/fields/related.py:620
+#: 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:664
+#: db/models/fields/related.py:691
#, python-format
msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
msgid_plural ""
@@ -1951,39 +2010,96 @@ msgid_plural ""
msgstr[0] "正しい %(self)s IDを入力してください。 %(value)r は無効です。"
msgstr[1] "正しい %(self)s IDを入力してください。 %(value)r は無効です。"
-#: forms/__init__.py:382
+#: newforms/fields.py:101 newforms/fields.py:254
+#, python-format
+msgid "Ensure this value has at most %d characters."
+msgstr "%d 字以下で入力してください。"
+
+#: newforms/fields.py:103 newforms/fields.py:256
+#, python-format
+msgid "Ensure this value has at least %d characters."
+msgstr "%d 字以上で入力してください。"
+
+#: newforms/fields.py:128
+#, python-format
+msgid "Ensure this value is less than or equal to %s."
+msgstr "この値は %s 以下でなければなりません。"
+
+#: newforms/fields.py:130
+#, python-format
+msgid "Ensure this value is greater than or equal to %s."
+msgstr "この値は %s 以上でなければなりません。"
+
+#: newforms/fields.py:163
+msgid "Enter a valid date."
+msgstr "日付を正しく入力してください。"
+
+#: newforms/fields.py:190
+msgid "Enter a valid time."
+msgstr "時間を正しく入力してください。"
+
+#: newforms/fields.py:226
+msgid "Enter a valid date/time."
+msgstr "日付/時間を正しく入力してください。"
+
+#: newforms/fields.py:240
+msgid "Enter a valid value."
+msgstr "値を正しく入力してください。"
+
+#: newforms/fields.py:287 newforms/fields.py:309
+msgid "Enter a valid URL."
+msgstr "URLを正しく入力してください。"
+
+#: newforms/fields.py:311
+msgid "This URL appears to be a broken link."
+msgstr "このURLはリンクが壊れています。"
+
+#: 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
+msgid "Enter a list of values."
+msgstr "リストを入力してください。"
+
+#: newforms/fields.py:386
+#, python-format
+msgid "Select a valid choice. %s is not one of the available choices."
+msgstr "正しく選択してください。 %s は候補にありません。"
+
+#: 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 字以下で入力してください。"
-#: forms/__init__.py:387
+#: oldforms/__init__.py:392
msgid "Line breaks are not allowed here."
msgstr "改行はできません。"
-#: forms/__init__.py:488 forms/__init__.py:561 forms/__init__.py:600
+#: 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 にありません。"
-#: forms/__init__.py:664
+#: oldforms/__init__.py:669
msgid "The submitted file is empty."
msgstr "入力されたファイルは空です。"
-#: forms/__init__.py:720
+#: oldforms/__init__.py:725
msgid "Enter a whole number between -32,768 and 32,767."
msgstr "-32,768 から 32,767 までの整数を入力してください。"
-#: forms/__init__.py:730
+#: oldforms/__init__.py:735
msgid "Enter a positive number."
msgstr "正の数を入力してください。"
-#: forms/__init__.py:740
+#: oldforms/__init__.py:745
msgid "Enter a whole number between 0 and 32,767."
msgstr "0 から 32,767 までの整数を入力してください。"
-#: template/defaultfilters.py:401
+#: template/defaultfilters.py:436
msgid "yes,no,maybe"
msgstr "はい,いいえ,たぶん"
@@ -2209,21 +2325,3 @@ msgstr "%(verbose_name)s を更新しました。"
#, python-format
msgid "The %(verbose_name)s was deleted."
msgstr " %(verbose_name)s を削除しました。"
-
-#~ msgid "String (up to 50)"
-#~ msgstr "文字列 (50 字まで)"
-
-#~ msgid "Comment"
-#~ msgstr "コメント"
-
-#~ msgid "Comments"
-#~ msgstr "コメント"
-
-#~ msgid "label"
-#~ msgstr "ラベル"
-
-#~ msgid "package"
-#~ msgstr "パッケージ"
-
-#~ msgid "packages"
-#~ msgstr "パッケージ"
diff --git a/django/conf/locale/kn/LC_MESSAGES/django.mo b/django/conf/locale/kn/LC_MESSAGES/django.mo
new file mode 100644
index 0000000000..51e9ab5fbc
--- /dev/null
+++ b/django/conf/locale/kn/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/kn/LC_MESSAGES/django.po b/django/conf/locale/kn/LC_MESSAGES/django.po
new file mode 100644
index 0000000000..b8adeb2c43
--- /dev/null
+++ b/django/conf/locale/kn/LC_MESSAGES/django.po
@@ -0,0 +1,2533 @@
+# Kannada translation of Django.
+# Copyright (C) 2007 Translation Team <translation@sampada.info>
+# This file is distributed under the same license as the Django package.
+# Kannada Localization Team <translation@sampada.info>, 2007.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Django-kn 0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-09-25 15:43+0200\n"
+"PO-Revision-Date: 2007-01-08 20:22+0530\n"
+"Last-Translator: Kannada Localization Team <translation@sampada.info>\n"
+"Language-Team: Kannada <translation@sampada.info>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit"
+
+#: contrib/comments/models.py:67 contrib/comments/models.py:166
+msgid "object ID"
+msgstr "ವಸ್ತುವಿನ ಐಡಿ"
+
+#: contrib/comments/models.py:68
+msgid "headline"
+msgstr "ತಲೆಬರಹ"
+
+#: contrib/comments/models.py:69 contrib/comments/models.py:90
+#: contrib/comments/models.py:167
+msgid "comment"
+msgstr "ಟಿಪ್ಪಣಿ"
+
+#: contrib/comments/models.py:70
+msgid "rating #1"
+msgstr "ಕ್ರಮಾಂಕ ೧"
+
+#: contrib/comments/models.py:71
+msgid "rating #2"
+msgstr "ಕ್ರಮಾಂಕ ೨"
+
+#: contrib/comments/models.py:72
+msgid "rating #3"
+msgstr "ಕ್ರಮಾಂಕ ೩ "
+
+#: contrib/comments/models.py:73
+msgid "rating #4"
+msgstr "ಕ್ರಮಾಂಕ ೪"
+
+#: contrib/comments/models.py:74
+msgid "rating #5"
+msgstr "ಕ್ರಮಾಂಕ ೫ "
+
+#: contrib/comments/models.py:75
+msgid "rating #6"
+msgstr "ಕ್ರಮಾಂಕ ೬ "
+
+#: contrib/comments/models.py:76
+msgid "rating #7"
+msgstr "ಕ್ರಮಾಂಕ ೭"
+
+#: contrib/comments/models.py:77
+msgid "rating #8"
+msgstr "ಕ್ರಮಾಂಕ ೮"
+
+#: 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 " %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"
+"This comment was posted by a user who has posted fewer than %(count)s "
+"comments:\n"
+"\n"
+"%(text)s"
+msgstr ""
+"%(count)s ಕ್ಕಿಂತಲೂ ಕಡಿಮೆ "
+"ಟಿಪ್ಪಣಿಗಳನ್ನು ಬರೆದಿರುವ "
+"ಸದಸ್ಯರಿಂದ ಈ ಟಿಪ್ಪಣಿ "
+"ಬರೆಯಲ್ಪಟ್ಟಿದೆ:\n"
+"\n"
+"%(text)s"
+"%(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 ""
+"ಸಲ್ಲಿಕೆಗಳಿಗೆ ಮಾತ್ರ "
+"ಅನುಮತಿಯಿದೆ"
+
+#: contrib/comments/views/comments.py:192
+#: contrib/comments/views/comments.py:284
+msgid "One or more of the required fields wasn't submitted"
+msgstr ""
+"ಒಂದು ಅಥವಾ ಹೆಚ್ಚು ಅಗತ್ಯ "
+"ಅಂಶಗಳನ್ನು ಸಲ್ಲಿಸಿಲ್ಲ"
+
+#: contrib/comments/views/comments.py:196
+#: contrib/comments/views/comments.py:286
+msgid "Somebody tampered with the comment form (security violation)"
+msgstr ""
+"ಯಾರೋ ಟಿಪ್ಪಣಿಯನ್ನು "
+"ಬದಲಾಯಿಸಿದ್ದಾರೆ( ಭದ್ರತೆಯ "
+"ಉಲ್ಲಂಘನೆ)"
+
+#: contrib/comments/views/comments.py:206
+#: contrib/comments/views/comments.py:292
+msgid ""
+"The comment form had an invalid 'target' parameter -- the object ID was "
+"invalid"
+msgstr ""
+"ಟಿಪ್ಪಣಿ ನಮೂನೆಗೆ ತಪ್ಪು "
+"ಟಾರ್ಗೆಟ್ ಪ್ಯಾರಾಮೀಟರ್ ಇದೆ. "
+"ವಸ್ತುವಿನ ಐಡಿಯು "
+"ದೋಷಪೂರಿತವಾಗಿತ್ತು."
+
+#: contrib/comments/views/comments.py:257
+#: contrib/comments/views/comments.py:321
+msgid "The comment form didn't provide either 'preview' or 'post'"
+msgstr ""
+"ಟಿಪ್ಪಣಿ ನಮೂನೆ "
+"'ಮುನ್ನೋಟ'ವನ್ನಾಗಲೀ "
+"'ಸಲ್ಲಿಕೆ'ಯನ್ನಾಗಲೀ "
+"ಒದಗಿಸಲಿಲ್ಲ."
+
+#: contrib/comments/templates/comments/form.html:6
+#: contrib/comments/templates/comments/form.html:8
+#: contrib/admin/templates/admin/login.html:17
+msgid "Username:"
+msgstr "ಬಳಕೆದಾರನ ಹೆಸರು:"
+
+#: contrib/comments/templates/comments/form.html:6
+#: contrib/admin/templates/admin/object_history.html:3
+#: contrib/admin/templates/admin/change_list.html:5
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
+#: contrib/admin/templates/admin_doc/bookmarklets.html:4
+#: contrib/admin/templates/admin_doc/view_detail.html:4
+#: contrib/admin/templates/admin_doc/template_tag_index.html:5
+#: contrib/admin/templates/admin_doc/template_detail.html:4
+#: contrib/admin/templates/admin_doc/template_filter_index.html:5
+#: contrib/admin/templates/admin_doc/missing_docutils.html:4
+#: contrib/admin/templates/admin_doc/view_index.html:5
+#: contrib/admin/templates/admin_doc/model_detail.html:3
+#: contrib/admin/templates/admin_doc/index.html:4
+#: contrib/admin/templates/admin_doc/model_index.html:5
+msgid "Log out"
+msgstr "ಹೊರಕ್ಕೆ ಹೋಗಿ"
+
+#: contrib/comments/templates/comments/form.html:8
+#: contrib/admin/templates/admin/login.html:20
+msgid "Password:"
+msgstr "ಪ್ರವೇಶಪದ:"
+
+#: contrib/comments/templates/comments/form.html:8
+msgid "Forgotten your password?"
+msgstr ""
+"ನಿಮ್ಮ ಪ್ರವೇಶಪದ ಮರೆತಿದ್ದೀರಾ?"
+
+#: contrib/comments/templates/comments/form.html:12
+msgid "Ratings"
+msgstr "ಕ್ರಮಾಂಕಗಳು"
+
+#: contrib/comments/templates/comments/form.html:12
+#: contrib/comments/templates/comments/form.html:23
+msgid "Required"
+msgstr "ಅವಶ್ಯ"
+
+#: contrib/comments/templates/comments/form.html:12
+#: contrib/comments/templates/comments/form.html:23
+msgid "Optional"
+msgstr "ಐಚ್ಛಿಕ"
+
+#: contrib/comments/templates/comments/form.html:23
+msgid "Post a photo"
+msgstr "ಭಾವಚಿತ್ರ ಸಲ್ಲಿಸಿ"
+
+#: contrib/comments/templates/comments/form.html:28
+#: contrib/comments/templates/comments/freeform.html:5
+msgid "Comment:"
+msgstr "ಟಿಪ್ಪಣಿ:"
+
+#: contrib/comments/templates/comments/form.html:35
+#: contrib/comments/templates/comments/freeform.html:10
+msgid "Preview comment"
+msgstr "ಟಿಪ್ಪಣಿ ಮುನ್ನೋಟ"
+
+#: contrib/comments/templates/comments/freeform.html:4
+msgid "Your name:"
+msgstr "ನಿಮ್ಮ ಹೆಸರು:"
+
+#: contrib/admin/filterspecs.py:40
+#, python-format
+msgid ""
+"<h3>By %s:</h3>\n"
+"<ul>\n"
+msgstr ""
+"<h3>%s ಇಂದ :</h3>\n"
+"<ul>\n"
+
+#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
+#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169
+msgid "All"
+msgstr "ಎಲ್ಲಾ"
+
+#: contrib/admin/filterspecs.py:109
+msgid "Any date"
+msgstr "ಯಾವುದೇ ದಿನಾಂಕ"
+
+#: contrib/admin/filterspecs.py:110
+msgid "Today"
+msgstr "ಈದಿನ"
+
+#: contrib/admin/filterspecs.py:113
+msgid "Past 7 days"
+msgstr "ಕಳೆದ ೭ ದಿನಗಳು"
+
+#: contrib/admin/filterspecs.py:115
+msgid "This month"
+msgstr "ಈ ತಿಂಗಳು"
+
+#: contrib/admin/filterspecs.py:117
+msgid "This year"
+msgstr "ಈ ವರ್ಷ"
+
+#: contrib/admin/filterspecs.py:143
+msgid "Yes"
+msgstr "ಹೌದು"
+
+#: contrib/admin/filterspecs.py:143
+msgid "No"
+msgstr "ಇಲ್ಲ"
+
+#: contrib/admin/filterspecs.py:150
+msgid "Unknown"
+msgstr "ಗೊತ್ತಿಲ್ಲ(ದ/ದ್ದು)"
+
+#: contrib/admin/models.py:16
+msgid "action time"
+msgstr "ಕ್ರಮದ(ಕ್ರಿಯೆಯ) ಸಮಯ"
+
+#: contrib/admin/models.py:19
+msgid "object id"
+msgstr "ವಸ್ತುವಿನ ಐಡಿ"
+
+#: contrib/admin/models.py:20
+msgid "object repr"
+msgstr "ವಸ್ತು ಪ್ರಾತಿನಿಧ್ಯ"
+
+#: contrib/admin/models.py:21
+msgid "action flag"
+msgstr "ಕ್ರಮದ(ಕ್ರಿಯೆಯ) ಪತಾಕೆ"
+
+#: contrib/admin/models.py:22
+msgid "change message"
+msgstr ""
+"ಬದಲಾವಣೆಯ ಸಂದೇಶ/ಸಂದೇಶ ಬದಲಿಸಿ"
+
+#: contrib/admin/models.py:25
+msgid "log entry"
+msgstr "ಲಾಗ್ ದಾಖಲೆ"
+
+#: contrib/admin/models.py:26
+msgid "log entries"
+msgstr "ಲಾಗ್ ದಾಖಲೆಗಳು"
+
+#: contrib/admin/templatetags/admin_list.py:230
+msgid "All dates"
+msgstr "ಎಲ್ಲಾ ದಿನಾಂಕಗಳು"
+
+#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:59
+msgid ""
+"Please enter a correct username and password. Note that both fields are "
+"case-sensitive."
+msgstr ""
+"ದಯವಿಟ್ಟು ಸರಿಯಾದ ಬಳಕೆದಾರ-ಪದ "
+"ಮತ್ತು ಪ್ರವೇಶಪದ ಬರೆಯಿರಿ "
+".ಎರಡೂ ಇಂಗ್ಲೀಷಿನ ಸಣ್ಣ ಮತ್ತು "
+"ದೊಡ್ಡ ಅಕ್ಷರ ಸಂವೇದಿ "
+"ಎಂಬುದನ್ನು ಗಮನದಲ್ಲಿಡಿ"
+
+#: contrib/admin/views/decorators.py:24
+#: contrib/admin/templates/admin/login.html:25
+msgid "Log in"
+msgstr "ಒಳಗೆ ಬನ್ನಿ"
+
+#: contrib/admin/views/decorators.py:62
+msgid ""
+"Please log in again, because your session has expired. Don't worry: Your "
+"submission has been saved."
+msgstr ""
+"ದಯವಿಟ್ಟು ಇನ್ನೊಮ್ಮೆ ಒಳಬನ್ನಿ "
+"(ಲಾಗಿನ್ ಮಾಡಿ) . ನಿಮ್ಮ ಅಧಿವೇಶನ "
+"ಕೊನೆಗೊಂಡಿದೆ. "
+"ಚಿಂತಿಸಬೇಡಿ:ನಿಮ್ಮ "
+"ಸಲ್ಲಿಕೆಯನ್ನು ಉಳಿಸಲಾಗಿದೆ."
+
+#: contrib/admin/views/decorators.py:69
+msgid ""
+"Looks like your browser isn't configured to accept cookies. Please enable "
+"cookies, reload this page, and try again."
+msgstr ""
+"ಕುಕೀಗಳನ್ನು ಸ್ವೀಕರಿಸುವಂತೆ "
+"ನಿಮ್ಮ ಜಾಲವೀಕ್ಷಕವನ್ನು "
+"ಸಂರಚಿಸಲಾಗಿಲ್ಲ ಎಂದು "
+"ತೋರುತ್ತದೆ. ದಯವಿಟ್ಟು "
+"ಕುಕೀಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ , ಈ "
+"ಪುಟವನ್ನು ಮತ್ತೆ ಲೋಡ್ ಮಾಡಿ "
+"ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿರಿ. "
+
+#: contrib/admin/views/decorators.py:83
+msgid "Usernames cannot contain the '@' character."
+msgstr ""
+"ಬಳಕೆದಾರ-ಹೆಸರುಗಳು '@' "
+"ಅಕ್ಷರವನ್ನು ಒಳಗೊಳ್ಳುವಂತಿಲ್ಲ"
+
+#: contrib/admin/views/decorators.py:85
+#, python-format
+msgid "Your e-mail address is not your username. Try '%s' instead."
+msgstr ""
+"ನಿಮ್ಮ ವಿ-ಅಂಚೆ ವಿಳಾಸವು ನಿಮ್ಮ "
+"ಬಳಕೆದಾರ-ಹೆಸರಲ್ಲ; ಬದಲಾಗಿ '%s' "
+"ಪ್ರಯತ್ನಿಸಿ."
+
+#: contrib/admin/views/main.py:223
+msgid "Site administration"
+msgstr "ತಾಣ ನಿರ್ವಹಣೆ"
+
+#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:17
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was added successfully."
+msgstr ""
+" %(name)s \"%(obj)s\" ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ "
+"ಸೇರಿಸಲಾಯಿತು."
+
+#: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347
+#: contrib/admin/views/auth.py:22
+msgid "You may edit it again below."
+msgstr ""
+"ನೀವು ಅದನ್ನು ಕೆಳಗೆ ಮತ್ತೆ "
+"ಬದಲಾಯಿಸಬಹುದು."
+
+#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356
+#, python-format
+msgid "You may add another %s below."
+msgstr ""
+"ನೀವು ಕೆಳಗೆ ಇನ್ನೊಂದು %s "
+"ಸೇರಿಸಬಹುದು."
+
+#: contrib/admin/views/main.py:289
+#, python-format
+msgid "Add %s"
+msgstr "%s ಸೇರಿಸಿ"
+
+#: contrib/admin/views/main.py:335
+#, python-format
+msgid "Added %s."
+msgstr "%s ಸೇರಿಸಲಾಯಿತು."
+
+#: contrib/admin/views/main.py:335 contrib/admin/views/main.py:337
+#: contrib/admin/views/main.py:339
+msgid "and"
+msgstr "ಮತ್ತು"
+
+#: contrib/admin/views/main.py:337
+#, python-format
+msgid "Changed %s."
+msgstr "%s ಬದಲಾಯಿಸಲಾಯಿತು."
+
+#: contrib/admin/views/main.py:339
+#, python-format
+msgid "Deleted %s."
+msgstr "%s ತೆಗೆದುಹಾಕಲಾಯಿತು."
+
+#: contrib/admin/views/main.py:342
+msgid "No fields changed."
+msgstr "ಯಾವುದೇ ಅಂಶಗಳು ಬದಲಾಗಲಿಲ್ಲ."
+
+#: contrib/admin/views/main.py:345
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was changed successfully."
+msgstr ""
+"%(name)s \"%(obj)s\" ಸಫಲವಾಗಿ "
+"ಬದಲಾಯಿಸಲಾಯಿತು."
+
+#: contrib/admin/views/main.py:353
+#, python-format
+msgid ""
+"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
+msgstr ""
+"%(name)s \"%(obj)s\" ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ "
+"ಸೇರಿಸಲಾಯಿತು. ನೀವು ಕೆಳಗೆ "
+"ಅದನ್ನು ಮತ್ತೆ ಬದಲಾಯಿಸಬಹುದು."
+
+#: contrib/admin/views/main.py:391
+#, python-format
+msgid "Change %s"
+msgstr "%s ಅನ್ನು ಬದಲಿಸು"
+
+#: contrib/admin/views/main.py:473
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
+msgstr ""
+"%(name)s ನಲ್ಲಿ ಒಂದು ಅಥವಾ ಹೆಚ್ಚು "
+"%(fieldname)s :%(obj)s"
+
+#: contrib/admin/views/main.py:478
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s:"
+msgstr ""
+"%(name)s ನಲ್ಲಿ ಒಂದು ಅಥವಾ ಹೆಚ್ಚು "
+"%(fieldname)s :"
+
+#: contrib/admin/views/main.py: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/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: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:28
+msgid "Add user"
+msgstr "ಬಳಕೆದಾರನನ್ನು ಸೇರಿಸಿ"
+
+#: contrib/admin/templates/admin/object_history.html:3
+#: contrib/admin/templates/admin/change_list.html:5
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
+#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+msgid "Documentation"
+msgstr "ವಿವರಮಾಹಿತಿ"
+
+#: contrib/admin/templates/admin/object_history.html:3
+#: contrib/admin/templates/admin/change_list.html:5
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
+#: contrib/admin/templates/admin_doc/bookmarklets.html:4
+#: contrib/admin/templates/admin_doc/view_detail.html:4
+#: contrib/admin/templates/admin_doc/template_tag_index.html:5
+#: contrib/admin/templates/admin_doc/template_detail.html:4
+#: contrib/admin/templates/admin_doc/template_filter_index.html:5
+#: contrib/admin/templates/admin_doc/missing_docutils.html:4
+#: contrib/admin/templates/admin_doc/view_index.html:5
+#: contrib/admin/templates/admin_doc/model_detail.html:3
+#: contrib/admin/templates/admin_doc/index.html:4
+#: contrib/admin/templates/admin_doc/model_index.html:5
+msgid "Change password"
+msgstr "ಪ್ರವೇಶಪದ ಬದಲಿಸಿ"
+
+#: contrib/admin/templates/admin/object_history.html:5
+#: contrib/admin/templates/admin/500.html:4
+#: contrib/admin/templates/admin/change_list.html:6
+#: contrib/admin/templates/admin/base.html:30
+#: contrib/admin/templates/admin/delete_confirmation.html:6
+#: contrib/admin/templates/admin/change_form.html:13
+#: contrib/admin/templates/admin/invalid_setup.html:4
+#: contrib/admin/templates/registration/password_change_done.html:4
+#: contrib/admin/templates/registration/password_reset_form.html:4
+#: contrib/admin/templates/registration/logged_out.html:4
+#: contrib/admin/templates/registration/password_reset_done.html:4
+#: contrib/admin/templates/registration/password_change_form.html:4
+#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+msgid "Home"
+msgstr "ಪ್ರಾರಂಭಸ್ಥಳ(ಮನೆ)"
+
+#: contrib/admin/templates/admin/object_history.html:5
+#: contrib/admin/templates/admin/change_form.html:20
+msgid "History"
+msgstr "ಚರಿತ್ರೆ"
+
+#: contrib/admin/templates/admin/object_history.html:18
+msgid "Date/time"
+msgstr "ದಿನಾಂಕ/ಸಮಯ"
+
+#: contrib/admin/templates/admin/object_history.html:19
+msgid "User"
+msgstr "ಬಳಕೆದಾರ"
+
+#: contrib/admin/templates/admin/object_history.html:20
+msgid "Action"
+msgstr "ಕ್ರಮ(ಕ್ರಿಯೆ)"
+
+#: contrib/admin/templates/admin/object_history.html:26
+msgid "DATE_WITH_TIME_FULL"
+msgstr "N j, Y, P"
+
+#: contrib/admin/templates/admin/object_history.html:36
+msgid ""
+"This object doesn't have a change history. It probably wasn't added via this "
+"admin site."
+msgstr ""
+"ಈ ವಸ್ತುವಿಗೆ ಬದಲಾವಣೆಯ "
+"ಇತಿಹಾಸವಿಲ್ಲ. ಅದು ಬಹುಶಃ ಈ "
+"ಆಡಳಿತತಾಣದ ಮೂಲಕ "
+"ಸೇರಿಸಲ್ಪಟ್ಟಿಲ್ಲ."
+
+#: contrib/admin/templates/admin/base_site.html:4
+msgid "Django site admin"
+msgstr "ಜಾಂಗೋ ತಾಣದ ಆಡಳಿತಗಾರರು"
+
+#: contrib/admin/templates/admin/base_site.html:7
+msgid "Django administration"
+msgstr "ಜಾಂಗೋ ಆಡಳಿತ"
+
+#: contrib/admin/templates/admin/500.html:4
+msgid "Server error"
+msgstr "ಸರ್ವರ್ ದೋಷ"
+
+#: contrib/admin/templates/admin/500.html:6
+msgid "Server error (500)"
+msgstr "ಸರ್ವರ್ ದೋಷ(೫೦೦)"
+
+#: contrib/admin/templates/admin/500.html:9
+msgid "Server Error <em>(500)</em>"
+msgstr "ಸರ್ವರ್ ದೋಷ<em>(೫೦೦)</em>"
+
+#: contrib/admin/templates/admin/500.html:10
+msgid ""
+"There's been an error. It's been reported to the site administrators via "
+"e-mail and should be fixed shortly. Thanks for your patience."
+msgstr ""
+"ಇಲ್ಲಿ ಒಂದು ತಪ್ಪಾಗಿದೆ. ಅದನ್ನು "
+"ತಾಣದ ಆಡಳಿತಗಾರರಿಗೆ ವರದಿ "
+"ಮಾಡಲಾಗಿದ್ದು ಶೀಘ್ರದ್ದಲ್ಲಿ "
+"ಸರಿಪಡಿಸಲಾಗುವದು. ನಿಮ್ಮ "
+"ತಾಳ್ಮೆಗೆ ಧನ್ಯವಾದಗಳು."
+
+#: contrib/admin/templates/admin/404.html:4
+#: contrib/admin/templates/admin/404.html:8
+msgid "Page not found"
+msgstr "ಪುಟ ಸಿಗಲಿಲ್ಲ"
+
+#: contrib/admin/templates/admin/404.html:10
+msgid "We're sorry, but the requested page could not be found."
+msgstr ""
+"ಕ್ಷಮಿಸಿ, ನೀವು ಕೇಳಿದ ಪುಟ "
+"ಸಿಗಲಿಲ್ಲ"
+
+#: contrib/admin/templates/admin/index.html:17
+#, python-format
+msgid "Models available in the %(name)s application."
+msgstr ""
+"%(name)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_list.html:11
+#, python-format
+msgid "Add %(name)s"
+msgstr "%(name)s ಸೇರಿಸಿ"
+
+#: contrib/admin/templates/admin/login.html:22
+msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
+msgstr ""
+"ನೀವು <a "
+"href=\"/password_reset/\">ಪ್ರವೇಶಪದವನ್ನು "
+"ಮರೆತಿದ್ದೀರಾ</a>?"
+
+#: 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 ""
+"'%(escaped_object)s' %(object_name)s ಅನ್ನು "
+"ತೆಗೆದುಹಾಕುವುದರಿಂದ ಸಂಬಂಧಿತ "
+"ವಸ್ತುಗಳೂ ಕಳೆದುಹೋಗುತ್ತವೆ. "
+"ಆದರೆ ನಿಮ್ಮ ಖಾತೆಗೆ ಕೆಳಕಂಡ "
+"ಬಗೆಗಳ ವಸ್ತುಗಳನ್ನು "
+"ತೆಗೆದುಹಾಕಲು ಅನುಮತಿಯಿಲ್ಲ."
+
+#: contrib/admin/templates/admin/delete_confirmation.html:21
+#, python-format
+msgid ""
+"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
+msgstr ""
+"ದಿಟವಾಗಿಯೂ, ನೀವು %(object_name)s "
+"\"%(escaped_object)ಗಳನ್ನು\"? "
+"ತೆಗೆದುಹಾಕಬಯಸಿದ್ದೀರಾ? "
+"ಸಂಬಂಧಪಟ್ಟ ಕೆಳಕಂಡ ಎಲ್ಲವನ್ನೂ "
+"ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ:"
+
+#: 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/search_form.html:8
+msgid "Go"
+msgstr "ಹೋಗಿ"
+
+#: contrib/admin/templates/admin/search_form.html:10
+#, python-format
+msgid "1 result"
+msgstr "೧ ಫಲಿತಾಂಶ"
+
+#: contrib/admin/templates/admin/search_form.html:10
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr "ಒಟ್ಟು %(full_result_count)s"
+
+#: contrib/admin/templates/admin/pagination.html:10
+msgid "Show all"
+msgstr "ಎಲ್ಲವನ್ನೂ ತೋರಿಸು"
+
+#: contrib/admin/templates/admin/filters.html:4
+msgid "Filter"
+msgstr "ಸೋಸಕ"
+
+#: contrib/admin/templates/admin/change_form.html:21
+msgid "View on site"
+msgstr "ತಾಣದಲ್ಲಿ ನೋಡಿ"
+
+#: contrib/admin/templates/admin/change_form.html:30
+msgid "Please correct the error below."
+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/submit_line.html:4
+msgid "Save as new"
+msgstr "ಹೊಸದರಂತೆ ಉಳಿಸಿ"
+
+#: contrib/admin/templates/admin/submit_line.html:5
+msgid "Save and add another"
+msgstr ""
+"ಉಳಿಸಿ ಮತ್ತು ಇನ್ನೊಂದನ್ನು "
+"ಸೇರಿಸಿ"
+
+#: contrib/admin/templates/admin/submit_line.html:6
+msgid "Save and continue editing"
+msgstr ""
+"ಉಳಿಸಿ ಮತ್ತು ತಿದ್ದುವುದನ್ನು "
+"ಮುಂದುವರಿಸಿರಿ."
+
+#: contrib/admin/templates/admin/submit_line.html:7
+msgid "Save"
+msgstr "ಉಳಿಸಿ"
+
+#: contrib/admin/templates/admin/invalid_setup.html:8
+msgid ""
+"Something's wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+"ಡಾಟಾಬೇಸನ್ನು ಇನ್ಸ್ಟಾಲ್ "
+"ಮಾಡುವಾಗ ಏನೋ ತಪ್ಪಾಗಿದೆ. ಸೂಕ್ತ "
+" ಡಾಟಾಬೇಸ್ ಕೋಷ್ಟಕಗಳು "
+"ರಚನೆಯಾಗಿ ಅರ್ಹ ಬಳಕೆದಾರರು "
+"ಅವುಗಳನ್ನು ಓದಬಹುದಾಗಿದೆಯೇ "
+"ಎಂಬುದನ್ನು ಖಾತರಿ "
+"ಪಡಿಸಿಕೊಳ್ಳಿ."
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:6
+msgid ""
+"First, enter a username and password. Then, you'll be able to edit more user "
+"options."
+msgstr ""
+"ಮೊದಲು ಬಳಕೆದಾರ-ಹೆಸರು ಮತ್ತು "
+"ಪ್ರವೇಶಪದವನ್ನು ಕೊಡಿರಿ. ನಂತರ, "
+"ನೀವು ಇನ್ನಷ್ಟು ಆಯ್ಕೆಗಳನ್ನು "
+"ಬದಲಿಸಬಹುದಾಗಿದೆ."
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:12
+msgid "Username"
+msgstr "ಬಳಕೆದಾರ-ಹೆಸರು"
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:18
+msgid "Password"
+msgstr "ಪ್ರವೇಶಪದ"
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:23
+msgid "Password (again)"
+msgstr "ಪ್ರವೇಶಪದ(ಇನ್ನೊಮ್ಮೆ)"
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:24
+msgid "Enter the same password as above, for verification."
+msgstr ""
+"ಖಚಿತಗೊಳಿಸಲು ಮೇಲಿನ "
+"ಪ್ರವೇಶಪದವನ್ನು ಇನ್ನೊಮ್ಮೆ "
+"ಬರೆಯಿರಿ."
+
+#: contrib/admin/templates/registration/password_change_done.html:4
+#: contrib/admin/templates/registration/password_change_form.html:4
+#: contrib/admin/templates/registration/password_change_form.html:6
+#: contrib/admin/templates/registration/password_change_form.html:10
+msgid "Password change"
+msgstr "ಪ್ರವೇಶಪದ ಬದಲಾವಣೆ"
+
+#: contrib/admin/templates/registration/password_change_done.html:6
+#: contrib/admin/templates/registration/password_change_done.html:10
+msgid "Password change successful"
+msgstr "ಪ್ರವೇಶಪದ ಬದಲಾವಣೆ ಯಶಸ್ವಿ"
+
+#: contrib/admin/templates/registration/password_change_done.html:12
+msgid "Your password was changed."
+msgstr ""
+"ನಿಮ್ಮ ಪ್ರವೇಶಪದ "
+"ಬದಲಾಯಿಸಲಾಗಿದೆ"
+
+#: contrib/admin/templates/registration/password_reset_form.html:4
+#: contrib/admin/templates/registration/password_reset_form.html:6
+#: contrib/admin/templates/registration/password_reset_form.html:10
+#: contrib/admin/templates/registration/password_reset_done.html:4
+msgid "Password reset"
+msgstr "ಪ್ರವೇಶಪದವನ್ನು ಬದಲಿಸುವಿಕೆ"
+
+#: contrib/admin/templates/registration/password_reset_form.html:12
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll reset "
+"your password and e-mail the new one to you."
+msgstr ""
+"ಪ್ರವೇಶಪದವನ್ನು ಮರೆತಿದ್ದೀರಾ? "
+"ನಿಮ್ಮ ವಿ-ಅಂಚೆಯ ವಿಳಾಸವನ್ನು "
+"ಕೆಳಗೆ ಸೂಚಿಸಿರಿ, ನಾವು ನಿಮ್ಮ "
+"ಪ್ರವೇಶಪದವನ್ನು ಬದಲಾಯಿಸಿ "
+"ಅದನ್ನು ರವಾನಿಸುತ್ತೇವೆ."
+
+#: contrib/admin/templates/registration/password_reset_form.html:16
+msgid "E-mail address:"
+msgstr "ವಿ-ಅಂಚೆ ವಿಳಾಸ:"
+
+#: contrib/admin/templates/registration/password_reset_form.html:16
+msgid "Reset my password"
+msgstr ""
+"ನನ್ನ ಪ್ರವೇಶಪದವನ್ನು ಮತ್ತೆ "
+"ನಿರ್ಧರಿಸಿ "
+
+#: contrib/admin/templates/registration/logged_out.html:8
+msgid "Thanks for spending some quality time with the Web site today."
+msgstr ""
+"ಈದಿನ ತಮ್ಮ ಅತ್ಯಮೂಲ್ಯವಾದ "
+"ಸಮಯವನ್ನು ನಮ್ಮ ತಾಣದಲ್ಲಿ "
+"ಕಳೆದುದಕ್ಕಾಗಿ ಧನ್ಯವಾದಗಳು."
+
+#: contrib/admin/templates/registration/logged_out.html:10
+msgid "Log in again"
+msgstr "ಮತ್ತೆ ಒಳಬನ್ನಿ"
+
+#: contrib/admin/templates/registration/password_reset_done.html:6
+#: contrib/admin/templates/registration/password_reset_done.html:10
+msgid "Password reset successful"
+msgstr ""
+"ಪ್ರವೇಶಪದದ ಮರುನಿರ್ಧಾರ "
+"ಸಾಧ್ಯವಾಗಿದೆ"
+
+#: contrib/admin/templates/registration/password_reset_done.html:12
+msgid ""
+"We've e-mailed a new password to the e-mail address you submitted. You "
+"should be receiving it shortly."
+msgstr ""
+"ನಾವು ಹೊಸ ಪ್ರವೇಶಪದವನ್ನು "
+"ನಿಮ್ಮ ವಿ-ಅಂಚೆಗೆ ಕಳಿಸಿದ್ದೇವೆ. "
+"ಕೆಲವೇ ಕ್ಷಣಗಳಲ್ಲಿ ನೀವದನ್ನು "
+"ಪಡೆಯಲಿದ್ದೀರಿ."
+
+#: contrib/admin/templates/registration/password_change_form.html:12
+msgid ""
+"Please enter your old password, for security's sake, and then enter your new "
+"password twice so we can verify you typed it in correctly."
+msgstr ""
+"ಭದ್ರತೆಯ ದೃಷ್ಟಿಯಿಂದ "
+"ದಯವಿಟ್ಟು ನಿಮ್ಮ ಹಳೆಯ "
+"ಪ್ರವೇಶಪದವನ್ನು ಸೂಚಿಸಿರಿ. "
+"ಆನಂತರ ನೀವು ಸರಿಯಾಗಿ "
+"ಬರೆದಿದ್ದೀರೆಂದು ನಾವು "
+"ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಹೊಸ "
+"ಪ್ರವೇಶಪದವನ್ನು ಎರಡು ಬಾರಿ "
+"ಬರೆಯಿರಿ."
+
+#: contrib/admin/templates/registration/password_change_form.html:17
+msgid "Old password:"
+msgstr "ಹಳೆಯ ಪ್ರವೇಶಪದ:"
+
+#: contrib/admin/templates/registration/password_change_form.html:19
+msgid "New password:"
+msgstr "ಹೊಸ ಪ್ರವೇಶಪದ:"
+
+#: contrib/admin/templates/registration/password_change_form.html:21
+msgid "Confirm password:"
+msgstr "ಪ್ರವೇಶಪದವನ್ನು ಖಚಿತಪಡಿಸಿ:"
+
+#: contrib/admin/templates/registration/password_change_form.html:23
+msgid "Change my password"
+msgstr "ನನ್ನ ಪ್ರವೇಶಪದ ಬದಲಿಸಿ"
+
+#: contrib/admin/templates/registration/password_reset_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"
+"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
+"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
+"select the bookmarklet from any page in the site. Note that some of these\n"
+"bookmarklets require you to be viewing the site from a computer designated\n"
+"as \"internal\" (talk to your system administrator if you aren't sure if\n"
+"your computer is \"internal\").</p>\n"
+msgstr ""
+"\n"
+"<p "
+"class=\"help\">ಸಣ್ಣ್ಪುಟಗುರುತುಗಳನ್ನು "
+"ಅನುಸ್ಥಾಪಿಸಲು ಕೊಂಡಿಯನ್ನು "
+"ಪುಟಗುರುತು ಉಪಕರಣಪಟ್ಟಿ(ಟೂಲ್ "
+"ಬಾರ್)ಕಡೆಗೆ ಎಳೆದೊಯ್ಯಿರಿ,\n"
+" ಅಥವಾ ಕೊಂಡಿಯ ಮೇಲೆ "
+"ಮೂಷಿಕ(ಮೌಸ್)ದ ಬಲಬಟನ್ನನ್ನು "
+"ಒತ್ತಿ ಪುಟಗುರುತುಗಳಿಗೆ "
+"ಸೇರಿಸಿಕೊಳ್ಳಿ. ಈಗ \n"
+" ನೀವು ಸಣ್ಣಪುಟಗುರುತುಗಳನ್ನು "
+"ತಾಣದ ಯಾವ ಪುಟದಿಂದ ಬೇಕಾದರೂ "
+"ಆಯ್ಕೆಮಾಡಿಕೊಳ್ಳಬಹುದು.\n"
+"ನೆನಪಿರಲಿ, ಕೆಲವು "
+"ಸಣ್ಣಪುಟಗುರುತುಗಳಿಗೆ ನೀವು ಈ "
+"ತಾಣವನ್ನು ಆಂತರಿಕ (\"internal\") ಎಂದು "
+"ಸೂಚಿತವಾಗಿರುವ ಗಣಕದಿಂದ "
+"ವೀಕ್ಷಿಸಬೇಕಾಗುತ್ತದೆ.\n"
+"( ನಿಮ್ಮ ಗಣಕವು \"internal\" ಹೌದೇ "
+"ಅಲ್ಲವೇ ಎಂದು "
+"ಗೊತ್ತಿಲ್ಲದಿದ್ದರೆ , ಗಣಕದ "
+"ಆಡಳಿತಗಾರರನ್ನು ಕೇಳಿರಿ).</p>\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/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 ""
+"ಇದು ಮೇಲಿನಂತೆ ಸಂಪೂರ್ಣ "
+"ಪಥವಾದರೂ ಆಗಿರಬಹುದು ಅಥವಾ "
+"'http://'ದಿಂದ ಆರಂಭವಾಗುವ ಸಂಪೂರ್ಣ URL "
+"ಆಗಿರಬಹುದು."
+
+#: contrib/redirects/models.py:13
+msgid "redirect"
+msgstr "ಪುನರ್ನಿರ್ದೇಶನ"
+
+#: contrib/redirects/models.py:14
+msgid "redirects"
+msgstr "ಪುನರ್ನಿರ್ದೇಶನ(ಗಳು)"
+
+#: contrib/flatpages/models.py:8
+msgid ""
+"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
+msgstr ""
+"ಉದಾ:'/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/auth/views.py:39
+msgid "Logged out"
+msgstr "ಹೊರಬರಲಾಗಿದೆ"
+
+#: contrib/auth/models.py:38 contrib/auth/models.py:57
+msgid "name"
+msgstr "ಹೆಸರು"
+
+#: contrib/auth/models.py:40
+msgid "codename"
+msgstr "ಸಾಂಕೇತಿಕ ಹೆಸರು"
+
+#: contrib/auth/models.py:42
+msgid "permission"
+msgstr "ಅನುಮತಿ"
+
+#: contrib/auth/models.py:43 contrib/auth/models.py:58
+msgid "permissions"
+msgstr "ಅನುಮತಿಗಳು"
+
+#: contrib/auth/models.py:60
+msgid "group"
+msgstr "ಗುಂಪು"
+
+#: contrib/auth/models.py:61 contrib/auth/models.py:100
+msgid "groups"
+msgstr "ಗುಂಪುಗಳು"
+
+#: contrib/auth/models.py:90
+msgid "username"
+msgstr "ಬಳಕೆದಾರ-ಹೆಸರು"
+
+#: contrib/auth/models.py:90
+msgid ""
+"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
+"digits and underscores)."
+msgstr ""
+"೩೦ ಅಥವಾ ಕಡಿಮೆ ಅಕ್ಷರಗಳು "
+"ಅವಶ್ಯ. ( ಅಕ್ಷರಗಳು , ಅಂಕೆಗಳು "
+"ಮತ್ತು ಅಂಡರ್ಸ್ಕೋರ್(_) ಗಳು "
+"ಮಾತ್ರ)"
+
+#: contrib/auth/models.py:91
+msgid "first name"
+msgstr "ಮೊದಲ ಹೆಸರು"
+
+#: contrib/auth/models.py:92
+msgid "last name"
+msgstr "ಕೊನೆಯ ಹೆಸರು"
+
+#: contrib/auth/models.py:93
+msgid "e-mail address"
+msgstr "ವಿ-ಅಂಚೆ ವಿಳಾಸ"
+
+#: contrib/auth/models.py:94
+msgid "password"
+msgstr "ಪ್ರವೇಶಪದ"
+
+#: contrib/auth/models.py:94
+msgid "Use '[algo]$[salt]$[hexdigest]'"
+msgstr " '[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:256
+msgid "message"
+msgstr "ಸಂದೇಶ"
+
+#: contrib/auth/forms.py:52
+msgid ""
+"Your Web browser doesn't appear to have cookies enabled. Cookies are "
+"required for logging in."
+msgstr ""
+"ನಿಮ್ಮ ಜಾಲವೀಕ್ಷಕದಲ್ಲಿ "
+"ಕುಕೀಗಳು "
+"ಸಕ್ರಿಯಗೊಳಿಸಲ್ಪಟ್ಟಂತಿಲ್ಲ. "
+"ಒಳಬರಲು ಕುಕೀಗಳು ಅಗತ್ಯ. "
+
+#: contrib/auth/forms.py:61
+msgid "This account is inactive."
+msgstr "ಈ ಖಾತೆಯು ನಿಷ್ಕ್ರಿಯವಾಗಿದೆ"
+
+#: contrib/contenttypes/models.py:20
+msgid "python model class name"
+msgstr ""
+"ಪೈಥಾನ್ ಮಾಡೆಲ್ ಕ್ಲಾಸಿನ ಹೆಸರು"
+
+#: contrib/contenttypes/models.py:23
+msgid "content type"
+msgstr "ಒಳವಿಷಯದ ಬಗೆ"
+
+#: contrib/contenttypes/models.py:24
+msgid "content types"
+msgstr "ಒಳವಿಷಯದ ಬಗೆಗಳು"
+
+#: contrib/sessions/models.py:51
+msgid "session key"
+msgstr "ಅಧಿವೇಶನದ ಕೀಲಿಕೈ"
+
+#: contrib/sessions/models.py:52
+msgid "session data"
+msgstr "ಅಧಿವೇಶನದ ದತ್ತಾಂಶ"
+
+#: contrib/sessions/models.py:53
+msgid "expire date"
+msgstr "ಅವಧಿಮೀರುವ ದಿನಾಂಕ"
+
+#: contrib/sessions/models.py:57
+msgid "session"
+msgstr "ಅಧಿವೇಶನ"
+
+#: contrib/sessions/models.py:58
+msgid "sessions"
+msgstr "ಅಧಿವೇಶನಗಳು"
+
+#: contrib/sites/models.py:10
+msgid "domain name"
+msgstr "ಡೊಮೈನ್ ಹೆಸರು"
+
+#: contrib/sites/models.py:11
+msgid "display name"
+msgstr "ತೋರಿಸುವ ಹೆಸರು"
+
+#: contrib/sites/models.py:15
+msgid "site"
+msgstr "ತಾಣ"
+
+#: contrib/sites/models.py:16
+msgid "sites"
+msgstr "ತಾಣಗಳು"
+
+#: utils/dates.py:6
+msgid "Monday"
+msgstr "ಸೋಮವಾರ"
+
+#: utils/dates.py:6
+msgid "Tuesday"
+msgstr "ಮಂಗಳವಾರ"
+
+#: utils/dates.py:6
+msgid "Wednesday"
+msgstr "ಬುಧವಾರ"
+
+#: utils/dates.py:6
+msgid "Thursday"
+msgstr "ಗುರುವಾರ"
+
+#: utils/dates.py:6
+msgid "Friday"
+msgstr "ಶುಕ್ರವಾರ"
+
+#: utils/dates.py:7
+msgid "Saturday"
+msgstr "ಶನಿವಾರ"
+
+#: utils/dates.py:7
+msgid "Sunday"
+msgstr "ರವಿವಾರ"
+
+#: utils/dates.py:14
+msgid "January"
+msgstr "ಜನವರಿ"
+
+#: utils/dates.py:14
+msgid "February"
+msgstr "ಫೆಬ್ರುವರಿ"
+
+#: utils/dates.py:14 utils/dates.py:27
+msgid "March"
+msgstr "ಮಾರ್ಚ್"
+
+#: utils/dates.py:14 utils/dates.py:27
+msgid "April"
+msgstr "ಎಪ್ರಿಲ್"
+
+#: utils/dates.py:14 utils/dates.py:27
+msgid "May"
+msgstr "ಮೇ"
+
+#: utils/dates.py:14 utils/dates.py:27
+msgid "June"
+msgstr "ಜೂನ್"
+
+#: utils/dates.py:15 utils/dates.py:27
+msgid "July"
+msgstr "ಜುಲೈ"
+
+#: utils/dates.py:15
+msgid "August"
+msgstr "ಆಗಸ್ಟ್"
+
+#: utils/dates.py:15
+msgid "September"
+msgstr "ಸೆಪ್ಟೆಂಬರ್"
+
+#: utils/dates.py:15
+msgid "October"
+msgstr "ಅಕ್ಟೋಬರ್"
+
+#: utils/dates.py:15
+msgid "November"
+msgstr "ನವೆಂಬರ್"
+
+#: utils/dates.py:16
+msgid "December"
+msgstr "ಡಿಸೆಂಬರ್"
+
+#: utils/dates.py:19
+msgid "jan"
+msgstr "ಜನವರಿ"
+
+#: utils/dates.py:19
+msgid "feb"
+msgstr "ಫೆಬ್ರವರಿ"
+
+#: utils/dates.py:19
+msgid "mar"
+msgstr "ಮಾರ್ಚ್"
+
+#: utils/dates.py:19
+msgid "apr"
+msgstr "ಏಪ್ರಿಲ್"
+
+#: utils/dates.py:19
+msgid "may"
+msgstr "ಮೇ"
+
+#: utils/dates.py:19
+msgid "jun"
+msgstr "ಜೂನ್"
+
+#: utils/dates.py:20
+msgid "jul"
+msgstr "ಜುಲೈ"
+
+#: utils/dates.py:20
+msgid "aug"
+msgstr "ಆಗಸ್ಟ್"
+
+#: utils/dates.py:20
+msgid "sep"
+msgstr "ಸೆಪ್ಟೆಂಬರ್"
+
+#: utils/dates.py:20
+msgid "oct"
+msgstr "ಅಕ್ಟೋಬರ್"
+
+#: utils/dates.py:20
+msgid "nov"
+msgstr "ನವೆಂಬರ್"
+
+#: utils/dates.py:20
+msgid "dec"
+msgstr "ಡಿಸೆಂಬರ್"
+
+#: utils/dates.py:27
+msgid "Jan."
+msgstr "ಜನವರಿ."
+
+#: utils/dates.py:27
+msgid "Feb."
+msgstr "ಫೆಬ್ರವರಿ."
+
+#: utils/dates.py:28
+msgid "Aug."
+msgstr "ಆಗಸ್ಟ್."
+
+#: utils/dates.py:28
+msgid "Sept."
+msgstr "ಸೆಪ್ಟೆಂಬರ್."
+
+#: utils/dates.py:28
+msgid "Oct."
+msgstr "ಅಕ್ಟೋಬರ್."
+
+#: utils/dates.py:28
+msgid "Nov."
+msgstr "ನವೆಂಬರ್."
+
+#: utils/dates.py:28
+msgid "Dec."
+msgstr "ಡಿಸೆಂಬರ್."
+
+#: utils/timesince.py:12
+msgid "year"
+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/translation/trans_real.py:362
+msgid "DATE_FORMAT"
+msgstr "N j, Y"
+
+#: utils/translation/trans_real.py:363
+msgid "DATETIME_FORMAT"
+msgstr "N j, Y, P"
+
+#: utils/translation/trans_real.py:364
+msgid "TIME_FORMAT"
+msgstr "P"
+
+#: utils/translation/trans_real.py:380
+msgid "YEAR_MONTH_FORMAT"
+msgstr "F Y"
+
+#: utils/translation/trans_real.py:381
+msgid "MONTH_DAY_FORMAT"
+msgstr "F j"
+
+#: conf/global_settings.py:39
+msgid "Arabic"
+msgstr "ಅರೇಬಿಕ್"
+
+#: conf/global_settings.py:40
+msgid "Bengali"
+msgstr "ಬೆಂಗಾಲಿ"
+
+#: conf/global_settings.py:41
+msgid "Czech"
+msgstr "ಝೆಕ್"
+
+#: conf/global_settings.py:42
+msgid "Welsh"
+msgstr "ವೆಲ್ಷ್"
+
+#: conf/global_settings.py:43
+msgid "Danish"
+msgstr "ಡ್ಯಾನಿಷ್"
+
+#: conf/global_settings.py:44
+msgid "German"
+msgstr "ಜರ್ಮನ್"
+
+#: conf/global_settings.py:45
+msgid "Greek"
+msgstr "ಗ್ರೀಕ್"
+
+#: conf/global_settings.py:46
+msgid "English"
+msgstr "ಇಂಗ್ಲಿಷ್"
+
+#: conf/global_settings.py:47
+msgid "Spanish"
+msgstr "ಸ್ಪ್ಯಾನಿಷ್"
+
+#: conf/global_settings.py:48
+msgid "Argentinean Spanish"
+msgstr "ಅರ್ಜೆಂಟೈನಾದ ಸ್ಪ್ಯಾನಿಷ್"
+
+#: conf/global_settings.py:49
+msgid "Finnish"
+msgstr "ಫಿನ್ನಿಶ್"
+
+#: conf/global_settings.py:50
+msgid "French"
+msgstr "ಫ್ರೆಂಚ್"
+
+#: conf/global_settings.py:51
+msgid "Galician"
+msgstr "ಗ್ಯಾಲಿಶಿಯನ್"
+
+#: conf/global_settings.py:52
+msgid "Hungarian"
+msgstr "ಹಂಗೇರಿಯನ್"
+
+#: conf/global_settings.py:53
+msgid "Hebrew"
+msgstr "ಹೀಬ್ರೂ"
+
+#: conf/global_settings.py:54
+msgid "Icelandic"
+msgstr "ಐಸ್‍ಲ್ಯಾಂಡಿಕ್"
+
+#: conf/global_settings.py:55
+msgid "Italian"
+msgstr "ಇಟಾಲಿಯನ್"
+
+#: conf/global_settings.py:56
+msgid "Japanese"
+msgstr "ಜಪಾನೀಸ್"
+
+#: conf/global_settings.py:57
+msgid "Dutch"
+msgstr "ಡಚ್"
+
+#: conf/global_settings.py:58
+msgid "Norwegian"
+msgstr "ನಾರ್ವೇಜಿಯನ್"
+
+#: conf/global_settings.py:59
+msgid "Brazilian"
+msgstr "ಬ್ರಾಝಿಲಿಯನ್"
+
+#: conf/global_settings.py:60
+msgid "Romanian"
+msgstr "ರೋಮೇನಿಯನ್"
+
+#: conf/global_settings.py:61
+msgid "Russian"
+msgstr "ರಶಿಯನ್"
+
+#: conf/global_settings.py:62
+msgid "Slovak"
+msgstr "ಸ್ಲೋವಾಕ್"
+
+#: conf/global_settings.py:63
+msgid "Slovenian"
+msgstr "ಸ್ಲೋವೇನಿಯನ್"
+
+#: conf/global_settings.py:64
+msgid "Serbian"
+msgstr "ಸೆರ್ಬಿಯನ್"
+
+#: conf/global_settings.py:65
+msgid "Swedish"
+msgstr "ಸ್ವೀಡಿಷ್"
+
+#: conf/global_settings.py:66
+msgid "Tamil"
+msgstr "ತಮಿಳು"
+
+#: conf/global_settings.py:67
+msgid "Turkish"
+msgstr "ಟರ್ಕಿಶ್"
+
+#: conf/global_settings.py:68
+msgid "Ukrainian"
+msgstr "ಯುಕ್ರೇನಿಯನ್"
+
+#: conf/global_settings.py:69
+msgid "Simplified Chinese"
+msgstr "ಸರಳೀಕೃತ ಚೈನೀಸ್"
+
+#: conf/global_settings.py:70
+msgid "Traditional Chinese"
+msgstr "ಸಂಪ್ರದಾಯಿಕ ಚೈನೀಸ್ "
+
+#: core/validators.py:63
+msgid "This value must contain only letters, numbers and underscores."
+msgstr ""
+"ಈ ಬೆಲೆಯು ಕೇವಲ ಅಕ್ಷರಗಳು , "
+"ಅಂಕೆಗಳು ಮತ್ತು ಅಂಡರ್ಸ್ಕೋರ್(_) "
+"ಗಳನ್ನು ಒಳಗೊಂಡಿರಬೇಕು"
+
+#: core/validators.py:67
+msgid ""
+"This value must contain only letters, numbers, underscores, dashes or "
+"slashes."
+msgstr ""
+"ಈ ಬೆಲೆಯು ಅಕ್ಷರಗಳು , ಅಂಕೆಗಳು , "
+"ಅಡಿಗೆರೆ ಅರ್ಥಾತ್ "
+"ಅಂಡರ್ಸ್ಕೋರ್(_) ,ಅಡ್ಡಗೆರೆ "
+"ಅರ್ಥಾತ್ ಡ್ಯಾಷ್(-) ಮತ್ತು "
+"ಓರೆಗೆರೆ ಅರ್ಥಾತ್ ಸ್ಲ್ಯಾಶ್ (/) "
+"ಗಳನ್ನು ಒಳಗೊಳ್ಳಬಹುದು."
+
+#: core/validators.py:71
+msgid "This value must contain only letters, numbers, underscores or hyphens."
+msgstr ""
+"ಈ ಬೆಲೆಯು ಕೇವಲ ಅಕ್ಷರಗಳು , "
+"ಅಂಕೆಗಳು ಮತ್ತು ಅಂಡರ್ಸ್ಕೋರ್(_) "
+"ಮತ್ತು ಹೈಫನ್(-)ಗಳನ್ನು "
+"ಒಳಗೊಂಡಿರಬೇಕು"
+
+#: core/validators.py:75
+msgid "Uppercase letters are not allowed here."
+msgstr ""
+"ಇಂಗ್ಲೀಷ್ ದೊಡ್ಡಕ್ಷರಗಳನ್ನು "
+"ಇಲ್ಲಿ ಬಳಸುವಂತಿಲ್ಲ"
+
+#: core/validators.py:79
+msgid "Lowercase letters are not allowed here."
+msgstr ""
+"ಇಂಗ್ಲೀಷ್ ಸಣ್ಣಕ್ಷರಗಳನ್ನು "
+"ಇಲ್ಲಿ ಬಳಸುವಂತಿಲ್ಲ"
+
+#: core/validators.py:86
+msgid "Enter only digits separated by commas."
+msgstr ""
+"ಅಲ್ಪವಿರಾಮ(,)ಗಳಿಂದ ಬೇರ್ಪಟ್ಟ "
+"ಅಂಕೆಗಳನ್ನು ಮಾತ್ರ ಬರೆಯಿರಿ."
+
+#: core/validators.py:98
+msgid "Enter valid e-mail addresses separated by commas."
+msgstr ""
+"ಇ-ಅಂಚೆಗಳ ವಿಳಾಸಗಳನ್ನು, "
+"ಅಲ್ಪವಿರಾಮ(,)ಗಳಿಂದ "
+"ಬೇರ್ಪಟ್ಟಿರುವಂತೆ ಸೂಚಿಸಿರಿ."
+
+#: core/validators.py:102
+msgid "Please enter a valid IP address."
+msgstr "ಸರಿಯಾದ IP ವಿಳಾಸ ಬರೆಯಿರಿ"
+
+#: core/validators.py:106
+msgid "Empty values are not allowed here."
+msgstr "ಇಲ್ಲಿ ಖಾಲಿ ಬಿಡುವಂತಿಲ್ಲ"
+
+#: core/validators.py:110
+msgid "Non-numeric characters aren't allowed here."
+msgstr ""
+"ಅಂಕೆಗಳಲ್ಲದೆ ಯಾವದೇ "
+"ಅಕ್ಷರಗಳನ್ನು ಇಲ್ಲಿ "
+"ಬಳಸುವಂತಿಲ್ಲ"
+
+#: core/validators.py:114
+msgid "This value can't be comprised solely of digits."
+msgstr ""
+"ಈ ಬೆಲೆಯಲ್ಲಿ ಅಂಕೆಗಳಷ್ಟೇ "
+"ಇರುವಂತಿಲ್ಲ"
+
+#: core/validators.py:119
+msgid "Enter a whole number."
+msgstr "ಪೂರ್ಣಾಂಕವೊಂದನ್ನು ಬರೆಯಿರಿ"
+
+#: core/validators.py:123
+msgid "Only alphabetical characters are allowed here."
+msgstr ""
+"ವರ್ಣಮಾಲೆಯ ಅಕ್ಷರಗಳನ್ನು "
+"ಮಾತ್ರ ಇಲ್ಲಿ ಬಳಸಬಹುದು."
+
+#: core/validators.py:138
+msgid "Year must be 1900 or later."
+msgstr ""
+"ವರ್ಷವು ೧೯೦೦ ಅಥವಾ "
+"ನಂತರದ್ದಿರಬೇಕು."
+
+#: core/validators.py:142
+#, python-format
+msgid "Invalid date: %s."
+msgstr "ತಪ್ಪು ದಿನಾಂಕ: %s."
+
+#: core/validators.py:146 db/models/fields/__init__.py:415
+msgid "Enter a valid date in YYYY-MM-DD format."
+msgstr ""
+"ಸರಿಯಾದ ದಿನಾಂಕವನ್ನು "
+"ವವವವ-ತಿತಿ-ದಿದಿ ರೀತಿಗೆ "
+"ಹೊಂದುವಂತೆ ಸೂಚಿಸಿರಿ."
+
+#: core/validators.py:151
+msgid "Enter a valid time in HH:MM format."
+msgstr ""
+"HH:MM ರೂಪದಲ್ಲಿ ಸರಿಯಾದ ಸಮಯವನ್ನು "
+"ಬರೆಯಿರಿ"
+
+#: core/validators.py:155 db/models/fields/__init__.py:477
+msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
+msgstr ""
+"ಸರಿಯಾದ ದಿನಾಂಕ/ವೇಳೆಯನ್ನು "
+"ವವವವ-ತಿತಿ-ದಿದಿ ಗಗ:ನಿನಿ "
+"ರೀತಿಗೆ ಹೊಂದುವಂತೆ ಸೂಚಿಸಿರಿ."
+
+#: core/validators.py:160
+msgid "Enter a valid e-mail address."
+msgstr ""
+"ಕ್ರಮಬದ್ಧ ವಿ-ವಿಳಾಸವೊಂದನ್ನು "
+"ಇಲ್ಲಿ ಬರೆಯಿರಿ"
+
+#: core/validators.py:172 core/validators.py:401 forms/__init__.py:661
+msgid "No file was submitted. Check the encoding type on the form."
+msgstr ""
+"ಯಾವದೇ ಕಡತವನ್ನೂ "
+"ಸಲ್ಲಿಸಲಾಗಿಲ್ಲ.ನಮೂನೆಯ ಮೇಲಿನ "
+"ಸಂಕೇತೀಕರಣ ಬಗೆಯನ್ನು "
+"ಪರೀಕ್ಷಿಸಿ."
+
+#: core/validators.py:176
+msgid ""
+"Upload a valid image. The file you uploaded was either not an image or a "
+"corrupted image."
+msgstr ""
+"ಸರಿಯಾದ ಚಿತ್ರವನ್ನು ಏರಿಸಿ. "
+"ನೀವು ಏರಿಸಿದ ಕಡತವು ಚಿತ್ರವಲ್ಲ "
+"ಅಥವಾ ಅದು ಕೆಟ್ಟು ಹೋಗಿರುವ "
+"ಚಿತ್ರ. "
+
+#: core/validators.py:183
+#, python-format
+msgid "The URL %s does not point to a valid image."
+msgstr ""
+"%s URL ಸರಿಯಾದ ಚಿತ್ರದೆಡೆಗೆ "
+"ಒಯ್ಯುತ್ತಿಲ್ಲ."
+
+#: core/validators.py:187
+#, python-format
+msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
+msgstr ""
+"ದೂರವಾಣಿ ಅಂಕೆಗಳು XXX-XXX-XXXX "
+"ರೀತಿಯಲ್ಲಿರಬೇಕು. \"%s\" "
+"ತಪ್ಪಾಗಿರುತ್ತದೆ."
+
+#: core/validators.py:195
+#, python-format
+msgid "The URL %s does not point to a valid QuickTime video."
+msgstr ""
+"%s URL ಸರಿಯಾದ ಕ್ವಿಕ್‍ಟೈಮ್ "
+"ದೃಶ್ಯದೆಡೆಗೆ ಒಯ್ಯುತ್ತಿಲ್ಲ."
+
+#: core/validators.py:199
+msgid "A valid URL is required."
+msgstr "ಸರಿಯಾದ URL ಅವಶ್ಯವಿದೆ"
+
+#: core/validators.py:213
+#, python-format
+msgid ""
+"Valid HTML is required. Specific errors are:\n"
+"%s"
+msgstr ""
+"ಸರಿಯಾದ HTML ಅವಶ್ಯ. ಇಲ್ಲಿನ "
+"ನಿರ್ದಿಷ್ಟ ತಪ್ಪುಗಳು:\n"
+"%s"
+
+#: core/validators.py:220
+#, python-format
+msgid "Badly formed XML: %s"
+msgstr "ತಪ್ಪು XML: %s"
+
+#: core/validators.py:230
+#, python-format
+msgid "Invalid URL: %s"
+msgstr "ತಪ್ಪು URL: %s"
+
+#: core/validators.py:234 core/validators.py:236
+#, python-format
+msgid "The URL %s is a broken link."
+msgstr "%s ಈ URL ಮುರಿದ ಕೊಂಡಿಯಾಗಿದೆ."
+
+#: core/validators.py:242
+msgid "Enter a valid U.S. state abbreviation."
+msgstr ""
+" ಅಮೇರಿಕೆಯ ಸಂಯುಕ್ತ ಸಂಸ್ಥಾನದ "
+"ರಾಜ್ಯದ ಸರಿಯಾದ "
+"ಸಂಕ್ಷಿಪ್ತರೂಪವನ್ನು ಕೊಡಿ."
+
+#: core/validators.py:256
+#, python-format
+msgid "Watch your mouth! The word %s is not allowed here."
+msgstr ""
+"ನಾಲಿಗೆ ಬಿಗಿ ಹಿಡಿಯಿರಿ! %s "
+"ಶಬ್ದವನ್ನು ಇಲ್ಲಿ "
+"ಬಳಸುವಂತಿಲ್ಲ."
+"ನಾಲಿಗೆ ಬಿಗಿ ಹಿಡಿಯಿರಿ! %s ಈ "
+"ಶಬ್ದಗಳನ್ನು ಇಲ್ಲಿ "
+"ಬಳಸುವಂತಿಲ್ಲ."
+
+#: core/validators.py:263
+#, python-format
+msgid "This field must match the '%s' field."
+msgstr ""
+"ಈ ಅಂಶವು '%s' ಅಂಶದೊಂದಿಗೆ "
+"ಹೊಂದಿಕೊಳ್ಳಬೇಕು."
+
+#: core/validators.py:282
+msgid "Please enter something for at least one field."
+msgstr ""
+"ಕನಿಷ್ಠ ಒಂದು ಅಂಶದಲ್ಲಿ "
+"ಏನನ್ನಾದರೂ ಬರೆಯಿರಿ."
+
+#: core/validators.py:291 core/validators.py:302
+msgid "Please enter both fields or leave them both empty."
+msgstr ""
+"ಎರಡೂ ಅಂಶಗಳನ್ನು ಭರತಿ ಮಾಡಿರಿ "
+"ಅಥವಾ ಎರಡನ್ನೂ ಖಾಲಿಯಾಗಿಡಿ."
+
+#: core/validators.py:309
+#, python-format
+msgid "This field must be given if %(field)s is %(value)s"
+msgstr ""
+" %(field)s ಇದು %(value)s ಆಗಿದ್ದರೆ ಈ "
+"ಅಂಶವನ್ನು ಕೊಡಲೇಬೇಕು"
+
+#: core/validators.py:321
+#, python-format
+msgid "This field must be given if %(field)s is not %(value)s"
+msgstr ""
+" %(field)s ಇದು %(value)s ಆಗಿಲ್ಲದಿದ್ದರೆ ಈ "
+"ಅಂಶವನ್ನು ಕೊಡಲೇಬೇಕು"
+
+#: core/validators.py:340
+msgid "Duplicate values are not allowed."
+msgstr ""
+"ಪಡಿಯಚ್ಚುಬೆಲೆಗಳಿಗೆ "
+"ಅನುಮತಿಯಿಲ್ಲ"
+
+#: core/validators.py:363
+#, python-format
+msgid "This value must be a power of %s."
+msgstr "ಈ ಬೆಲೆಯು %sದ ಘಾತವಾಗಿರಬೇಕು."
+
+#: core/validators.py:374
+msgid "Please enter a valid decimal number."
+msgstr ""
+"ದಯವಿಟ್ಟು ಸರಿಯಾದ ದಶಮಾನ "
+"ಸಂಖ್ಯೆ ಬರೆಯಿರಿ"
+
+#: core/validators.py:378
+#, python-format
+msgid "Please enter a valid decimal number with at most %s total digit."
+"Please enter a valid decimal number with at most %s total digits."
+msgstr ""
+"ದಯವಿಟ್ಟು ಸರಿಯಾದ ದಶಮಾನ "
+"ಸಂಖ್ಯೆಯನ್ನು - ಹೆಚ್ಚೆಂದರೆ "
+"ಒಟ್ಟು %s ಅಂಕೆ ಇರುವಂತೆ - "
+"ಬರೆಯಿರಿ."
+"ದಯವಿಟ್ಟು ಸರಿಯಾದ ದಶಮಾನ "
+"ಸಂಖ್ಯೆಯನ್ನು - ಹೆಚ್ಚೆಂದರೆ "
+"ಒಟ್ಟು %s ಅಂಕೆಗಳು ಇರುವಂತೆ - "
+"ಬರೆಯಿರಿ."
+
+#: core/validators.py:381
+#, 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:384
+#, python-format
+msgid "Please enter a valid decimal number with at most %s decimal place."
+"Please enter a valid decimal number with at most %s decimal places."
+msgstr ""
+"ದಯವಿಟ್ಟು ಸರಿಯಾದ ದಶಮಾನ "
+"ಸಂಖ್ಯೆಯನ್ನು - ದಶಮಾಂಶ ಭಾಗವು "
+"ಹೆಚ್ಚೆಂದರೆ ಒಟ್ಟು %s ಸ್ಥಾನ "
+"ಇರುವಂತೆ - ಬರೆಯಿರಿ."
+"ದಯವಿಟ್ಟು ಸರಿಯಾದ ದಶಮಾನ "
+"ಸಂಖ್ಯೆಯನ್ನು - ದಶಮಾಂಶ ಭಾಗವು "
+"ಹೆಚ್ಚೆಂದರೆ %s ಸ್ಥಾನಗಳು "
+"ಇರುವಂತೆ - ಬರೆಯಿರಿ."
+
+#: core/validators.py:394
+#, python-format
+msgid "Make sure your uploaded file is at least %s bytes big."
+msgstr ""
+"ನೀವು ಏರಿಸಿದ ಕಡತವು ಕನಿಷ್ಟ %s "
+"ಬೈಟ್‍ಗಳಷ್ಟು ದೊಡ್ಡದಿದೆ ಎಂದು "
+"ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ."
+
+#: core/validators.py:395
+#, python-format
+msgid "Make sure your uploaded file is at most %s bytes big."
+msgstr ""
+"ನೀವು ಏರಿಸಿದ ಕಡತವು %s "
+"ಬೈಟ್‍ಗಳಿಗಿಂತ ಹೆಚ್ಚಿರದ ಹಾಗೆ "
+"ನೋಡಿಕೊಳ್ಳಿ."
+
+#: core/validators.py:412
+msgid "The format for this field is wrong."
+msgstr "ಈ ಅಂಶದ ಸ್ವರೂಪವು ತಪ್ಪಾಗಿದೆ"
+
+#: core/validators.py:427
+msgid "This field is invalid."
+msgstr "ಈ ಅಂಶವು ತಪ್ಪಾಗಿದೆ"
+
+#: core/validators.py:463
+#, python-format
+msgid "Could not retrieve anything from %s."
+msgstr ""
+" %s ದಿಂದ ಏನನ್ನೂ "
+"ಹೊರತೆಗೆದುಕೊಳ್ಳಲಾಗಲಿಲ್ಲ."
+
+#: core/validators.py:466
+#, python-format
+msgid ""
+"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
+msgstr ""
+" %(url)s ಈ URL ತಪ್ಪು ಒಳವಿಷಯ-ಬಗೆಯ "
+"ಶಿರೋ‍ಭಾಗ '%(contenttype)s' ಅನ್ನು "
+"ಮರಳಿಸಿತು."
+
+#: core/validators.py:499
+#, python-format
+msgid ""
+"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
+"\"%(start)s\".)"
+msgstr ""
+"ದಯವಿಟ್ಟು %(line)s - ಸಾಲಿನಿಂದ "
+"ಮುಚ್ಚಿರದ %(tag)s ಟ್ಯಾಗ್ ಅನ್ನು "
+"ಮುಚ್ಚಿರಿ . (ಸಾಲು \"%(start)s\" ಎಂದು "
+"ಆರಂಭವಾಗುತ್ತದೆ.)"
+
+#: core/validators.py:503
+#, python-format
+msgid ""
+"Some text starting on line %(line)s is not allowed in that context. (Line "
+"starts with \"%(start)s\".)"
+msgstr ""
+" %(line)s ಸಾಲಿನಲ್ಲಿ ಆರಂಭವಾಗುವ ಕೆಲ "
+"ಪಠ್ಯಭಾಗವನ್ನು ಆ ಸಂದರ್ಭದಲ್ಲಿ "
+"ಬಳಸಲಾಗದು.(ಸಾಲು \"%(start)s\" ಎಂದು "
+"ಆರಂಭವಾಗುತ್ತದೆ.)"
+
+#: core/validators.py:508
+#, python-format
+msgid ""
+"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with "
+"\"%(start)s\".)"
+msgstr ""
+" %(line)sನೆ ಸಾಲಿನಲ್ಲಿರುವ \"%(attr)s\" "
+"ತಪ್ಪು ಗುಣಧರ್ಮವಾಗಿದೆ . (ಸಾಲು "
+"\"%(start)s\" ಎಂದು ಆರಂಭವಾಗುತ್ತದೆ.)"
+
+#: core/validators.py:513
+#, python-format
+msgid ""
+"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with "
+"\"%(start)s\".)"
+msgstr ""
+" %(line)s ನೆ ಸಾಲಿನಲ್ಲಿರುವ \"<%(tag)s>\" "
+"ತಪ್ಪು ಟ್ಯಾಗ್ ಆಗಿದೆ . (ಸಾಲು "
+"\"%(start)s\" ಎಂದು ಆರಂಭವಾಗುತ್ತದೆ.)"
+
+#: core/validators.py:517
+#, python-format
+msgid ""
+"A tag on line %(line)s is missing one or more required attributes. (Line "
+"starts with \"%(start)s\".)"
+msgstr ""
+" %(line)s ನೆ ಸಾಲಿನಲ್ಲಿರುವ ಟ್ಯಾಗ್ "
+"ಗೆ ಅಗತ್ಯವಾದ ಒಂದು ಅಥವಾ ಹೆಚ್ಚು "
+"ಗುಣಧರ್ಮಗಳು ಕಾಣೆಯಾಗಿವೆ . "
+"(ಸಾಲು \"%(start)s\" ಎಂದು "
+"ಆರಂಭವಾಗುತ್ತದೆ.)"
+
+#: core/validators.py:522
+#, python-format
+msgid ""
+"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
+"starts with \"%(start)s\".)"
+msgstr ""
+" %(line)s ನೆ ಸಾಲಿನಲ್ಲಿರುವ \"%(attr)s\" ಗೆ "
+"ತಪ್ಪು ಬೆಲೆ ಇದೆ. (ಸಾಲು \"%(start)s\" "
+"ಎಂದು ಆರಂಭವಾಗುತ್ತದೆ.)"
+
+#: views/generic/create_update.py:43
+#, python-format
+msgid "The %(verbose_name)s was created successfully."
+msgstr ""
+" %(verbose_name)s ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ "
+"ನಿರ್ಮಿಸಲಾಯಿತು."
+
+#: views/generic/create_update.py:117
+#, python-format
+msgid "The %(verbose_name)s was updated successfully."
+msgstr ""
+" %(verbose_name)s ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ "
+"ಮಾರ್ಪಡಿಸಲಾಯಿತು."
+
+#: views/generic/create_update.py:184
+#, python-format
+msgid "The %(verbose_name)s was deleted."
+msgstr ""
+" %(verbose_name)s ಅನ್ನು "
+"ತೆಗೆದುಹಾಕಲಾಯಿತು"
+
+#: db/models/manipulators.py:302
+#, python-format
+msgid "%(object)s with this %(type)s already exists for the given %(field)s."
+msgstr ""
+"ಕೊಟ್ಟಿರುವ %(field)sಗೆ ಈ %(type)s "
+"ಹೊಂದಿರುವ %(object)s ಈಗಾಗಲೇ ಇದೆ."
+
+#: db/models/fields/__init__.py:40
+#, python-format
+msgid "%(optname)s with this %(fieldname)s already exists."
+msgstr ""
+"ಈ %(fieldname)s ಹೊಂದಿರುವ %(optname)s ಈಗಾಗಲೇ "
+"ಇದೆ."
+
+#: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265
+#: db/models/fields/__init__.py:551 db/models/fields/__init__.py:562
+#: forms/__init__.py:346
+msgid "This field is required."
+msgstr "ಈ ಅಂಶ ಅಗತ್ಯ."
+
+#: db/models/fields/__init__.py:340
+msgid "This value must be an integer."
+msgstr ""
+"ಈ ಬೆಲೆಯು ಪೂರ್ಣ ಸಂಖ್ಯೆ ಇರಬೇಕು."
+
+#: db/models/fields/__init__.py:372
+msgid "This value must be either True or False."
+msgstr ""
+"ಈ ಬೆಲೆಯು ಹೌದು ಅಥವಾ ಇಲ್ಲ "
+"ಇರಬೇಕು."
+
+#: db/models/fields/__init__.py:388
+msgid "This field cannot be null."
+msgstr ""
+"ಈ ಅಂಶವನ್ನು ಖಾಲಿ ಬಿಡುವಂತಿಲ್ಲ."
+
+#: db/models/fields/__init__.py:571
+msgid "Enter a valid filename."
+msgstr ""
+"ಸರಿಯಾದ ಕಡತದ ಹೆಸರನ್ನು "
+"ಬರೆಯಿರಿ"
+
+#: db/models/fields/related.py:51
+#, python-format
+msgid "Please enter a valid %s."
+msgstr "ಸರಿಯಾದ %s ಅನ್ನು ಬರೆಯಿರಿ ."
+
+#: db/models/fields/related.py:618
+msgid "Separate multiple IDs with commas."
+msgstr ""
+"ಅನೇಕ ಐಡಿಗಳನ್ನು "
+"ಅಲ್ಪವಿರಾಮ(,)ಗಳಿಂದ "
+"ಬೇರ್ಪಡಿಸಿರಿ"
+
+#: db/models/fields/related.py:620
+msgid ""
+"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgstr ""
+"ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚನ್ನು "
+"ಆಯ್ದುಕೊಳ್ಳಲು ಮ್ಯಾಕ್ ಗಣಕದ "
+"ಮೇಲೆ \"ಕಂಟ್ರೋಲ್\", ಅಥವಾ "
+"\"ಕಮ್ಯಾಂಡ್\" ಅನ್ನು ಒತ್ತಿ "
+"ಹಿಡಿಯಿರಿ."
+
+#: db/models/fields/related.py:664
+#, python-format
+msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
+"Please enter valid %(self)s IDs. The values %(value)r are invalid."
+msgstr ""
+"ದಯವಿಟ್ಟು ಸರಿಯಾದ %(self)s "
+"ಐಡಿಗಳನ್ನು ಸೂಚಿಸಿರಿ . ಈಗ "
+"ಸೂಚಿಸಿದ %(value)r ತಪ್ಪಾಗಿದೆ."
+"ದಯವಿಟ್ಟು ಸರಿಯಾದ %(self)s "
+"ಐಡಿಗಳನ್ನು ಸೂಚಿಸಿರಿ . ಈಗ "
+"ಸೂಚಿಸಿದ %(value)s ತಪ್ಪಾಗಿವೆ"
+
+#: forms/__init__.py:381
+#, python-format
+msgid "Ensure your text is less than %s character."
+msgstr ""
+"ನಿಮ್ಮ ಗದ್ಯ %s ಅಕ್ಷರಕ್ಕಿಂತ "
+"ಕಡಿಮೆ ಇರುವಂತೆ ಜಾಗ್ರತೆ ವಹಿಸಿ."
+"ನಿಮ್ಮ ಗದ್ಯ %s ಅಕ್ಷರಗಳಿಗಿಂತ "
+"ಕಡಿಮೆ ಇರುವಂತೆ ಜಾಗ್ರತೆ ವಹಿಸಿ."
+
+#: forms/__init__.py:386
+msgid "Line breaks are not allowed here."
+msgstr ""
+" ಇಲ್ಲಿ "
+"ಸಾಲುಗಳನ್ನುತುಂಡರಿಸುವಂತಿಲ್ಲ"
+
+#: forms/__init__.py:487 forms/__init__.py:560 forms/__init__.py:599
+#, python-format
+msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
+msgstr ""
+"ಸರಿಯಾದ ಆಯ್ಕೆಯನ್ನು "
+"ಆಯ್ದುಕೊಳ್ಳಿರಿ.'%(data)s' %(choices)s "
+"ನಲ್ಲಿಲ್ಲ."
+
+#: forms/__init__.py:663
+msgid "The submitted file is empty."
+msgstr "ಸಲ್ಲಿಸಲಾದ ಕಡತ ಖಾಲಿ ಇದೆ."
+
+#: forms/__init__.py:719
+msgid "Enter a whole number between -32,768 and 32,767."
+msgstr ""
+"-೩೨,೭೬೮ ಹಾಗೂ ೩೨,೭೬೭ ರ ನಡುವಿನ "
+"ಪೂರ್ಣ ಸಂಖ್ಯೆ ಕೊಡಿ."
+
+#: forms/__init__.py:729
+msgid "Enter a positive number."
+msgstr "ಧನಾತ್ಮಕ ಸಂಖ್ಯೆ ಕೊಡಿ."
+
+#: forms/__init__.py:739
+msgid "Enter a whole number between 0 and 32,767."
+msgstr ""
+"೦ ಮತ್ತು ೩೨,೭೬೭ ರ ನಡುವಿನ ಒಂದು "
+"ಪೂರ್ಣಾಂಕ ಕೊಡಿ"
+
+#: template/defaultfilters.py:401
+msgid "yes,no,maybe"
+msgstr "ಹೌದು,ಇಲ್ಲ,ಇರಬಹುದು"
+
diff --git a/django/conf/locale/kn/LC_MESSAGES/djangojs.mo b/django/conf/locale/kn/LC_MESSAGES/djangojs.mo
new file mode 100644
index 0000000000..cbb9fb5ffc
--- /dev/null
+++ b/django/conf/locale/kn/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/django/conf/locale/kn/LC_MESSAGES/djangojs.po b/django/conf/locale/kn/LC_MESSAGES/djangojs.po
new file mode 100644
index 0000000000..38b4a6d341
--- /dev/null
+++ b/django/conf/locale/kn/LC_MESSAGES/djangojs.po
@@ -0,0 +1,116 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Django-kn 0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-09-25 15:43+0200\n"
+"PO-Revision-Date: 2007-01-08 20:22+0530\n"
+"Last-Translator: Kannada Localization Team <translation@sampada.info>\n"
+"Language-Team: Kannada <translation@sampada.info>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit"
+
+#: contrib/admin/media/js/SelectFilter2.js:33
+#, perl-format
+msgid "Available %s"
+msgstr "ಲಭ್ಯ %s "
+
+#: contrib/admin/media/js/SelectFilter2.js:41
+msgid "Choose all"
+msgstr "ಎಲ್ಲವನ್ನೂ ಆಯ್ದುಕೊಳ್ಳಿ"
+
+#: contrib/admin/media/js/SelectFilter2.js:46
+msgid "Add"
+msgstr "ಸೇರಿಸಿ"
+
+#: contrib/admin/media/js/SelectFilter2.js:48
+msgid "Remove"
+msgstr "ತೆಗೆದು ಹಾಕಿ"
+
+#: contrib/admin/media/js/SelectFilter2.js:53
+#, perl-format
+msgid "Chosen %s"
+msgstr "%s ಆಯ್ದುಕೊಳ್ಳಲಾಗಿದೆ"
+
+#: contrib/admin/media/js/SelectFilter2.js:54
+msgid "Select your choice(s) and click "
+msgstr ""
+"ನಿಮ್ಮ ಆಯ್ಕೆ(ಗಳ)ನ್ನು ಆರಿಸಿ "
+"ಮತ್ತು ಕ್ಲಿಕ್ಕಿಸಿ"
+
+#: contrib/admin/media/js/SelectFilter2.js:59
+msgid "Clear all"
+msgstr "ಎಲ್ಲವನ್ನೂ ತೆರವುಗೊಳಿಸಿ"
+
+#: contrib/admin/media/js/dateparse.js:26
+#: contrib/admin/media/js/calendar.js:24
+msgid ""
+"January February March April May June July August September October November "
+"December"
+msgstr ""
+"ಜನವರಿ ಫೆಬ್ರುವರಿ ಮಾರ್ಚ್ "
+"ಎಪ್ರಿಲ್ ಮೇ ಜೂನ್ ಜುಲೈ ಆಗಸ್ಟ್ "
+"ಸೆಪ್ಟೆಂಬರ್ ನವೆಂಬರ್ ಡಿಸೆಂಬರ್"
+
+#: contrib/admin/media/js/dateparse.js:27
+msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
+msgstr ""
+"ರವಿವಾರ ಸೋಮವಾರ ಮಂಗಳವಾರ "
+"ಬುಧವಾರ ಗುರುವಾರ ಶುಕ್ರವಾರ "
+"ಶನಿವಾರ"
+
+#: contrib/admin/media/js/calendar.js:25
+msgid "S M T W T F S"
+msgstr "ರ ಸೋ ಮ ಬು ಗು ಶು ಶ"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80
+msgid "Now"
+msgstr "ಈಗ"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48
+msgid "Clock"
+msgstr "ಗಡಿಯಾರ"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77
+msgid "Choose a time"
+msgstr "ಸಮಯವೊಂದನ್ನು ಆರಿಸಿ"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
+msgid "Midnight"
+msgstr "ಮಧ್ಯರಾತ್ರಿ"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
+msgid "6 a.m."
+msgstr "ಬೆಳಗಿನ ೬ ಗಂಟೆ "
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
+msgid "Noon"
+msgstr "ಮಧ್ಯಾಹ್ನ"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168
+msgid "Cancel"
+msgstr "ರದ್ದುಗೊಳಿಸಿ"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162
+msgid "Today"
+msgstr "ಈ ದಿನ"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114
+msgid "Calendar"
+msgstr "ಪಂಚಾಂಗ"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160
+msgid "Yesterday"
+msgstr "ನಿನ್ನೆ"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164
+msgid "Tomorrow"
+msgstr "ನಾಳೆ"
diff --git a/django/conf/locale/lv/LC_MESSAGES/django.mo b/django/conf/locale/lv/LC_MESSAGES/django.mo
new file mode 100644
index 0000000000..21f9e8aecb
--- /dev/null
+++ b/django/conf/locale/lv/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/lv/LC_MESSAGES/django.po b/django/conf/locale/lv/LC_MESSAGES/django.po
new file mode 100644
index 0000000000..72e2316fcb
--- /dev/null
+++ b/django/conf/locale/lv/LC_MESSAGES/django.po
@@ -0,0 +1,2326 @@
+# Django Latvian translation.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# ARVIS BICKOVSKIS <viestards.lists@gmail.com>, 2006.
+#
+# , fuzzy
+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 <viestards.lists@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: db/models/manipulators.py:305
+#, 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
+msgid "and"
+msgstr "un"
+
+#: db/models/fields/related.py:53
+#, python-format
+msgid "Please enter a valid %s."
+msgstr "Lūdzu ievadiet korektu %s"
+
+#: db/models/fields/related.py:642
+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."
+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."
+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 ""
+
+#: conf/global_settings.py:40
+msgid "Bengali"
+msgstr ""
+
+#: conf/global_settings.py:41
+msgid "Czech"
+msgstr ""
+
+#: conf/global_settings.py:42
+msgid "Welsh"
+msgstr ""
+
+#: conf/global_settings.py:43
+msgid "Danish"
+msgstr ""
+
+#: conf/global_settings.py:44
+msgid "German"
+msgstr ""
+
+#: conf/global_settings.py:45
+msgid "Greek"
+msgstr ""
+
+#: conf/global_settings.py:46
+msgid "English"
+msgstr ""
+
+#: conf/global_settings.py:47
+msgid "Spanish"
+msgstr ""
+
+#: conf/global_settings.py:48
+msgid "Argentinean Spanish"
+msgstr ""
+
+#: conf/global_settings.py:49
+msgid "Finnish"
+msgstr ""
+
+#: conf/global_settings.py:50
+msgid "French"
+msgstr ""
+
+#: conf/global_settings.py:51
+msgid "Galician"
+msgstr ""
+
+#: conf/global_settings.py:52
+msgid "Hungarian"
+msgstr ""
+
+#: conf/global_settings.py:53
+msgid "Hebrew"
+msgstr ""
+
+#: conf/global_settings.py:54
+msgid "Icelandic"
+msgstr ""
+
+#: conf/global_settings.py:55
+msgid "Italian"
+msgstr ""
+
+#: conf/global_settings.py:56
+msgid "Japanese"
+msgstr ""
+
+#: conf/global_settings.py:57
+msgid "Dutch"
+msgstr ""
+
+#: conf/global_settings.py:58
+msgid "Norwegian"
+msgstr ""
+
+#: conf/global_settings.py:59
+msgid "Polish"
+msgstr ""
+
+#: conf/global_settings.py:60
+msgid "Brazilian"
+msgstr ""
+
+#: conf/global_settings.py:61
+msgid "Romanian"
+msgstr ""
+
+#: conf/global_settings.py:62
+msgid "Russian"
+msgstr ""
+
+#: conf/global_settings.py:63
+msgid "Slovak"
+msgstr ""
+
+#: conf/global_settings.py:64
+msgid "Slovenian"
+msgstr ""
+
+#: conf/global_settings.py:65
+msgid "Serbian"
+msgstr ""
+
+#: conf/global_settings.py:66
+msgid "Swedish"
+msgstr ""
+
+#: conf/global_settings.py:67
+msgid "Tamil"
+msgstr ""
+
+#: conf/global_settings.py:68
+msgid "Turkish"
+msgstr ""
+
+#: conf/global_settings.py:69
+msgid "Ukrainian"
+msgstr ""
+
+#: conf/global_settings.py:70
+msgid "Simplified Chinese"
+msgstr ""
+
+#: conf/global_settings.py:71
+msgid "Traditional Chinese"
+msgstr ""
+
+#: 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/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 ""
+
+#: 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
+#, 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: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
+#, python-format
+msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
+msgstr ""
+
+#: oldforms/__init__.py:572 contrib/admin/filterspecs.py:150
+#: newforms/widgets.py:162
+msgid "Unknown"
+msgstr "Nezināms"
+
+#: oldforms/__init__.py:572 contrib/admin/filterspecs.py:143
+#: newforms/widgets.py:162
+msgid "Yes"
+msgstr "Jā"
+
+#: oldforms/__init__.py:572 contrib/admin/filterspecs.py:143
+#: newforms/widgets.py:162
+msgid "No"
+msgstr "Nē"
+
+#: 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 "Jūsu norādītais fails ir tukšs."
+
+#: 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."
+
+#: oldforms/__init__.py:735
+msgid "Enter a positive number."
+msgstr "Ievadiet pozitīvu skaitli."
+
+#: 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/sessions/models.py:51
+msgid "session key"
+msgstr "sesijas atslēga"
+
+#: 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 <a href=\"password/\">change "
+"password form</a>."
+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/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/'."
+
+#: 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://'."
+
+#: contrib/redirects/models.py:13
+msgid "redirect"
+msgstr "novirzīt"
+
+#: contrib/redirects/models.py:14
+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
+msgid "object ID"
+msgstr "objekta ID"
+
+#: contrib/comments/models.py:68
+msgid "headline"
+msgstr "virsraksts"
+
+#: contrib/comments/models.py:69 contrib/comments/models.py:90
+#: contrib/comments/models.py:167
+msgid "comment"
+msgstr "komentārs"
+
+#: contrib/comments/models.py:70
+msgid "rating #1"
+msgstr "reitings #1"
+
+#: contrib/comments/models.py:71
+msgid "rating #2"
+msgstr "reitings #2"
+
+#: contrib/comments/models.py:72
+msgid "rating #3"
+msgstr "reitings #3"
+
+#: contrib/comments/models.py:73
+msgid "rating #4"
+msgstr "reitings #4"
+
+#: contrib/comments/models.py:74
+msgid "rating #5"
+msgstr "reitings #5"
+
+#: contrib/comments/models.py:75
+msgid "rating #6"
+msgstr "reitings #6"
+
+#: contrib/comments/models.py:76
+msgid "rating #7"
+msgstr "reitings #7"
+
+#: contrib/comments/models.py:77
+msgid "rating #8"
+msgstr "reitings #8"
+
+#: contrib/comments/models.py:82
+msgid "is valid rating"
+msgstr "korekts reitings"
+
+#: 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
+msgid "is public"
+msgstr "publisks"
+
+#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304
+msgid "IP address"
+msgstr "IP adrese"
+
+#: contrib/comments/models.py:86
+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ā."
+
+#: contrib/comments/models.py:91
+msgid "comments"
+msgstr "komentāri"
+
+#: contrib/comments/models.py:131 contrib/comments/models.py:207
+msgid "Content object"
+msgstr "Satura objekts"
+
+#: 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 ""
+"Pievienojis %(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 "personas vārds"
+
+#: contrib/comments/models.py:171
+msgid "ip address"
+msgstr "ip adrese"
+
+#: contrib/comments/models.py:173
+msgid "approved by staff"
+msgstr "apstiprinājusi administrācija"
+
+#: contrib/comments/models.py:176
+msgid "free comment"
+msgstr "brīvais komentārs"
+
+#: contrib/comments/models.py:177
+msgid "free comments"
+msgstr "brīvie komentāri"
+
+#: contrib/comments/models.py:233
+msgid "score"
+msgstr "rezultāts"
+
+#: contrib/comments/models.py:234
+msgid "score date"
+msgstr "rezultāta datums"
+
+#: contrib/comments/models.py:237
+msgid "karma score"
+msgstr "karmas rezultāts"
+
+#: contrib/comments/models.py:238
+msgid "karma scores"
+msgstr "karmas rezultāti"
+
+#: contrib/comments/models.py:242
+#, python-format
+msgid "%(score)d rating by %(user)s"
+msgstr "%(score)d reitingu publicējis %(user)s"
+
+#: contrib/comments/models.py:258
+#, python-format
+msgid ""
+"This comment was flagged by %(user)s:\n"
+"\n"
+"%(text)s"
+msgstr ""
+"Šo komentāru atzīmējis %(user)s:\n"
+"\n"
+"%(text)s"
+
+#: contrib/comments/models.py:265
+msgid "flag date"
+msgstr "atzīmēšanas datums"
+
+#: contrib/comments/models.py:268
+msgid "user flag"
+msgstr "lietotāja atzīme"
+
+#: contrib/comments/models.py:269
+msgid "user flags"
+msgstr "lietotāja atzīmes"
+
+#: contrib/comments/models.py:273
+#, python-format
+msgid "Flag by %r"
+msgstr "Atzīmējis %r"
+
+#: contrib/comments/models.py:278
+msgid "deletion date"
+msgstr "dzēšanas datums"
+
+#: contrib/comments/models.py:280
+msgid "moderator deletion"
+msgstr "moderācijas dzēšana"
+
+#: contrib/comments/models.py:281
+msgid "moderator deletions"
+msgstr "moderācijas dzēšanas"
+
+#: contrib/comments/models.py:285
+#, python-format
+msgid "Moderator deletion by %r"
+msgstr "Moderācijas dzēšana, veicis %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 "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/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 "Izlogoties"
+
+#: contrib/comments/templates/comments/form.html:8
+#: contrib/admin/templates/admin/login.html:20
+msgid "Password:"
+msgstr "Parole:"
+
+#: contrib/comments/templates/comments/form.html:8
+msgid "Forgotten your password?"
+msgstr "Esat aizmirsis savu paroli?"
+
+#: contrib/comments/templates/comments/form.html:12
+msgid "Ratings"
+msgstr "Reitings"
+
+#: contrib/comments/templates/comments/form.html:12
+#: contrib/comments/templates/comments/form.html:23
+msgid "Required"
+msgstr "Pieprasīts"
+
+#: contrib/comments/templates/comments/form.html:12
+#: contrib/comments/templates/comments/form.html:23
+msgid "Optional"
+msgstr "Neobligāts"
+
+#: contrib/comments/templates/comments/form.html:23
+msgid "Post a photo"
+msgstr "Ievietojiet fotogrāfiju"
+
+#: contrib/comments/templates/comments/form.html:28
+#: contrib/comments/templates/comments/freeform.html:5
+msgid "Comment:"
+msgstr "Komentārs:"
+
+#: contrib/comments/templates/comments/form.html:35
+#: contrib/comments/templates/comments/freeform.html:10
+msgid "Preview comment"
+msgstr "Pirmsskatīt komentāru"
+
+#: contrib/comments/templates/comments/freeform.html:4
+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"
+
+#: contrib/sites/models.py:11
+msgid "display name"
+msgstr "izvadāmais vārds"
+
+#: contrib/sites/models.py:15
+msgid "site"
+msgstr "saits"
+
+#: contrib/sites/models.py:16
+msgid "sites"
+msgstr "saiti"
+
+#: contrib/admin/filterspecs.py:40
+#, python-format
+msgid ""
+"<h3>By %s:</h3>\n"
+"<ul>\n"
+msgstr ""
+
+#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
+#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169
+msgid "All"
+msgstr "Visi"
+
+#: contrib/admin/filterspecs.py:109
+msgid "Any date"
+msgstr "Jebkuršs datums"
+
+#: contrib/admin/filterspecs.py:110
+msgid "Today"
+msgstr "Šodien"
+
+#: contrib/admin/filterspecs.py:113
+msgid "Past 7 days"
+msgstr "Pēdējās 7 dienas"
+
+#: contrib/admin/filterspecs.py:115
+msgid "This month"
+msgstr "Šomēnes"
+
+#: contrib/admin/filterspecs.py:117
+msgid "This year"
+msgstr "Šogad"
+
+#: contrib/admin/models.py:16
+msgid "action time"
+msgstr "darbības laiks"
+
+#: contrib/admin/models.py:19
+msgid "object id"
+msgstr "objekta id"
+
+#: contrib/admin/models.py:20
+msgid "object repr"
+msgstr "objekta attēlojunms"
+
+#: contrib/admin/models.py:21
+msgid "action flag"
+msgstr "darbības atzīme"
+
+#: contrib/admin/models.py:22
+msgid "change message"
+msgstr "momainīt paziņojumu"
+
+#: contrib/admin/models.py:25
+msgid "log entry"
+msgstr "žurnāla ieraksts"
+
+#: contrib/admin/models.py:26
+msgid "log entries"
+msgstr "žurnāla ieraksti"
+
+#: contrib/admin/templatetags/admin_list.py:238
+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"
+"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
+"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
+"select the bookmarklet from any page in the site. Note that some of these\n"
+"bookmarklets require you to be viewing the site from a computer designated\n"
+"as \"internal\" (talk to your system administrator if you aren't sure if\n"
+"your computer is \"internal\").</p>\n"
+msgstr ""
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:19
+msgid "Documentation for this page"
+msgstr "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 <em>(500)</em>"
+msgstr "Servera kļūda <em>(500)</em>"
+
+#: contrib/admin/templates/admin/500.html:10
+msgid ""
+"There's been an error. It's been reported to the site administrators via e-"
+"mail and should be fixed shortly. Thanks for your patience."
+msgstr ""
+"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
+#, python-format
+msgid "1 result"
+msgid_plural "%(counter)s results"
+msgstr[0] ""
+msgstr[1] ""
+
+#: contrib/admin/templates/admin/search_form.html:10
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr ""
+
+#: contrib/admin/templates/admin/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 <strong>%(username)s</strong>."
+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"
+
+#: 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
+#, python-format
+msgid "You may add another %s below."
+msgstr "Jūs varat pievienot vēl vienu %s zemāk."
+
+#: contrib/admin/views/main.py:289
+#, python-format
+msgid "Add %s"
+msgstr "Pievienot %s"
+
+#: contrib/admin/views/main.py:335
+#, python-format
+msgid "Added %s."
+msgstr "Pievienots %s."
+
+#: contrib/admin/views/main.py:337
+#, python-format
+msgid "Changed %s."
+msgstr "Izmainīts %s."
+
+#: contrib/admin/views/main.py:339
+#, python-format
+msgid "Deleted %s."
+msgstr "Izdzēsts %s"
+
+#: contrib/admin/views/main.py:342
+msgid "No fields changed."
+msgstr "Neviens lauks nav izmainīts"
+
+#: contrib/admin/views/main.py:345
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was changed successfully."
+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."
+msgstr "%(name)s \"%(obj)s\" pievienots sekmīgi. Jūs to varat regiģēt zemāk."
+
+#: contrib/admin/views/main.py:391
+#, python-format
+msgid "Change %s"
+msgstr "Izmainīt %s"
+
+#: contrib/admin/views/main.py:473
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
+msgstr ""
+
+#: contrib/admin/views/main.py:478
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s:"
+msgstr ""
+
+#: contrib/admin/views/main.py:511
+#, 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
+msgid "Are you sure?"
+msgstr "Vai esat pārliecināts?"
+
+#: contrib/admin/views/main.py:536
+#, python-format
+msgid "Change history: %s"
+msgstr "Izmainīt vēsturi: %s"
+
+#: contrib/admin/views/main.py:570
+#, python-format
+msgid "Select %s"
+msgstr "Izvēlēties %s"
+
+#: contrib/admin/views/main.py:570
+#, python-format
+msgid "Select %s to change"
+msgstr "Izvēlēties %s lai izmainītu"
+
+#: 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 ""
+"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."
+
+#: contrib/admin/views/decorators.py:83
+msgid "Usernames cannot contain the '@' character."
+msgstr "Lietotājvārdi nevar saturēt simbolu '@'."
+
+#: contrib/admin/views/decorators.py:85
+#, python-format
+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: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
+#, fuzzy, python-format
+msgid "App %r not found"
+msgstr "Lapa nav atrasta"
+
+#: contrib/admin/views/doc.py:171
+#, python-format
+msgid "Model %r not found in app %r"
+msgstr ""
+
+#: contrib/admin/views/doc.py:183
+#, python-format
+msgid "the related `%s.%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
+msgid "model:"
+msgstr ""
+
+#: contrib/admin/views/doc.py:214
+#, python-format
+msgid "related `%s.%s` objects"
+msgstr ""
+
+#: contrib/admin/views/doc.py:219
+#, python-format
+msgid "all %s"
+msgstr ""
+
+#: contrib/admin/views/doc.py:224
+#, python-format
+msgid "number of %s"
+msgstr ""
+
+#: contrib/admin/views/doc.py:229
+#, python-format
+msgid "Fields on %s objects"
+msgstr ""
+
+#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301
+#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309
+#: contrib/admin/views/doc.py:310 contrib/admin/views/doc.py:312
+msgid "Integer"
+msgstr "Vesels skaitlis"
+
+#: contrib/admin/views/doc.py:292
+msgid "Boolean (Either True or False)"
+msgstr "Boolean (Pareizs vai Nepareizs)"
+
+#: 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)"
+
+#: contrib/admin/views/doc.py:294
+msgid "Comma-separated integers"
+msgstr "Ar komatu atdalīti veselie skaitļi"
+
+#: contrib/admin/views/doc.py:295
+msgid "Date (without time)"
+msgstr "Datums (bez laika)"
+
+#: contrib/admin/views/doc.py:296
+msgid "Date (with time)"
+msgstr "Datums (ar laiku)"
+
+#: contrib/admin/views/doc.py:297
+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:302
+msgid "File path"
+msgstr "Faila ceļš"
+
+#: contrib/admin/views/doc.py:300
+msgid "Decimal number"
+msgstr "Decimāls skaitlis"
+
+#: contrib/admin/views/doc.py:306
+msgid "Boolean (Either True, False or None)"
+msgstr "Loģiskais (Pareizs vai Nepareizs)"
+
+#: contrib/admin/views/doc.py:307
+msgid "Relation to parent model"
+msgstr "Relācija uz vecāka modeli"
+
+#: contrib/admin/views/doc.py:308
+msgid "Phone number"
+msgstr "Telefona numurs"
+
+#: contrib/admin/views/doc.py:313
+msgid "Text"
+msgstr "Teksts"
+
+#: contrib/admin/views/doc.py:314
+msgid "Time"
+msgstr "Laiks"
+
+#: contrib/admin/views/doc.py:316
+msgid "U.S. state (two uppercase letters)"
+msgstr "ASV štats (divi augšējā reģistra burti)"
+
+#: contrib/admin/views/doc.py:317
+msgid "XML text"
+msgstr "XML teksts"
+
+#: contrib/admin/views/doc.py:343
+#, python-format
+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/views/auth.py:57
+#, fuzzy
+msgid "Password changed successfully."
+msgstr "Paroles nomaiņa sekmīga"
+
+#: contrib/admin/views/auth.py:64
+#, fuzzy, python-format
+msgid "Change password: %s"
+msgstr "Paroles maiņa"
+
+#: newforms/fields.py:101 newforms/fields.py:254
+#, python-format
+msgid "Ensure this value has at most %d characters."
+msgstr ""
+
+#: newforms/fields.py:103 newforms/fields.py:256
+#, python-format
+msgid "Ensure this value has at least %d characters."
+msgstr ""
+
+#: newforms/fields.py:126 core/validators.py:120
+msgid "Enter a whole number."
+msgstr "Ievadiet veselus skaitļus."
+
+#: 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."
+
+#: newforms/fields.py:130
+#, python-format
+msgid "Ensure this value is greater than or equal to %s."
+msgstr ""
+
+#: 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
+#, python-format
+msgid "Select a valid choice. %s is not one of the available choices."
+msgstr ""
+
+#: template/defaultfilters.py:436
+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
+#, 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."
+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
+#, 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:435
+#, 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:436
+#, 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: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 <a href=\"/password_reset/\">forgotten your password</a>?"
+#~ msgstr "Vai esat <a href=\"/password_reset/\">aizmirsis paroli</a>?"
diff --git a/django/conf/locale/lv/LC_MESSAGES/djangojs.mo b/django/conf/locale/lv/LC_MESSAGES/djangojs.mo
new file mode 100644
index 0000000000..b81550aedb
--- /dev/null
+++ b/django/conf/locale/lv/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/django/conf/locale/lv/LC_MESSAGES/djangojs.po b/django/conf/locale/lv/LC_MESSAGES/djangojs.po
new file mode 100644
index 0000000000..534cffd8d0
--- /dev/null
+++ b/django/conf/locale/lv/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 <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"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 <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: contrib/admin/media/js/SelectFilter2.js:33
+#, perl-format
+msgid "Available %s"
+msgstr ""
+
+#: 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 ""
+
+#: contrib/admin/media/js/SelectFilter2.js:54
+msgid "Select your choice(s) and click "
+msgstr ""
+
+#: contrib/admin/media/js/SelectFilter2.js:59
+msgid "Clear all"
+msgstr ""
+
+#: contrib/admin/media/js/dateparse.js: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/calendar.js:25
+msgid "S M T W T F S"
+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 ""
+
+#: 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 ""
+
+#: 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 ""
diff --git a/django/conf/locale/mk/LC_MESSAGES/django.mo b/django/conf/locale/mk/LC_MESSAGES/django.mo
new file mode 100644
index 0000000000..5ab5aa6cbb
--- /dev/null
+++ b/django/conf/locale/mk/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/mk/LC_MESSAGES/django.po b/django/conf/locale/mk/LC_MESSAGES/django.po
new file mode 100644
index 0000000000..f23d8ed58a
--- /dev/null
+++ b/django/conf/locale/mk/LC_MESSAGES/django.po
@@ -0,0 +1,2320 @@
+# translation of mk_django.po to Macedonian
+#
+# Georgi Stanojevski <glisha@gmail.com>, 2006, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: mk_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"
+"Last-Translator: Georgi Stanojevski <glisha@gmail.com>\n"
+"Language-Team: Macedonian <ossm-members@hedona.on.net.mk>\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;"
+
+#: db/models/manipulators.py:305
+#, 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
+#: contrib/admin/views/main.py:337 contrib/admin/views/main.py:339
+msgid "and"
+msgstr "и"
+
+#: 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 "Одвојте ги идентификационите броеви со запирки."
+
+#: 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."
+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 се неправилни."
+
+#: 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
+msgid "This field is required."
+msgstr "Ова поле е задолжително."
+
+#: db/models/fields/__init__.py:366
+msgid "This value must be an integer."
+msgstr "Оваа вредност мора да биде цел број."
+
+#: db/models/fields/__init__.py:401
+msgid "This value must be either True or False."
+msgstr "Оваа вредност мора да биде или точно или неточно."
+
+#: db/models/fields/__init__.py:422
+msgid "This field cannot be null."
+msgstr "Оваа вредност неможе да биде null."
+
+#: db/models/fields/__init__.py:454 core/validators.py:147
+msgid "Enter a valid date in YYYY-MM-DD format."
+msgstr "Внесете правилен датум во форматот ГГГГ-ММ-ДД."
+
+#: db/models/fields/__init__.py:521 core/validators.py:156
+msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
+msgstr "Внесете правилен датум/време во форматот ГГГГ-ММ-ДД ЧЧ:ММ."
+
+#: db/models/fields/__init__.py:625
+msgid "Enter a valid filename."
+msgstr "Внесите правилно име на датотека."
+
+#: conf/global_settings.py:39
+msgid "Arabic"
+msgstr "Арапски"
+
+#: conf/global_settings.py:40
+msgid "Bengali"
+msgstr "Бенгалски"
+
+#: conf/global_settings.py:41
+msgid "Czech"
+msgstr "Чешки"
+
+#: conf/global_settings.py:42
+msgid "Welsh"
+msgstr "Велшки"
+
+#: conf/global_settings.py:43
+msgid "Danish"
+msgstr "Дански"
+
+#: conf/global_settings.py:44
+msgid "German"
+msgstr "Германски"
+
+#: conf/global_settings.py:45
+msgid "Greek"
+msgstr "Грчки"
+
+#: conf/global_settings.py:46
+msgid "English"
+msgstr "Англиски"
+
+#: conf/global_settings.py:47
+msgid "Spanish"
+msgstr "Шпански"
+
+#: conf/global_settings.py:48
+msgid "Argentinean Spanish"
+msgstr "Аргентиско шпански"
+
+#: conf/global_settings.py:49
+msgid "Finnish"
+msgstr "Фински"
+
+#: conf/global_settings.py:50
+msgid "French"
+msgstr "Француски"
+
+#: conf/global_settings.py:51
+msgid "Galician"
+msgstr "Галски"
+
+#: conf/global_settings.py:52
+msgid "Hungarian"
+msgstr "Унгарски"
+
+#: conf/global_settings.py:53
+msgid "Hebrew"
+msgstr "Еврејски"
+
+#: conf/global_settings.py:54
+msgid "Icelandic"
+msgstr "Исландски"
+
+#: conf/global_settings.py:55
+msgid "Italian"
+msgstr "Италијански"
+
+#: conf/global_settings.py:56
+msgid "Japanese"
+msgstr "Јапонски"
+
+#: conf/global_settings.py:57
+msgid "Latvian"
+msgstr "Латвиски"
+
+#: conf/global_settings.py:58
+msgid "Macedonian"
+msgstr "Македонски"
+
+#: conf/global_settings.py:59
+msgid "Dutch"
+msgstr "Холандски"
+
+#: conf/global_settings.py:60
+msgid "Norwegian"
+msgstr "Норвешки"
+
+#: conf/global_settings.py:61
+msgid "Polish"
+msgstr "Полски"
+
+#: conf/global_settings.py:62
+msgid "Brazilian"
+msgstr "Бразилски"
+
+#: conf/global_settings.py:63
+msgid "Romanian"
+msgstr "Романски"
+
+#: conf/global_settings.py:64
+msgid "Russian"
+msgstr "Руски"
+
+#: conf/global_settings.py:65
+msgid "Slovak"
+msgstr "Словачки"
+
+#: conf/global_settings.py:66
+msgid "Slovenian"
+msgstr "Словенечки"
+
+#: conf/global_settings.py:67
+msgid "Serbian"
+msgstr "Српски"
+
+#: conf/global_settings.py:68
+msgid "Swedish"
+msgstr "Шведски"
+
+#: conf/global_settings.py:69
+msgid "Tamil"
+msgstr "Тамил"
+
+#: conf/global_settings.py:70
+msgid "Turkish"
+msgstr "Турски"
+
+#: conf/global_settings.py:71
+msgid "Ukrainian"
+msgstr "Украински"
+
+#: conf/global_settings.py:72
+msgid "Simplified Chinese"
+msgstr "Упростен кинески"
+
+#: conf/global_settings.py:73
+msgid "Traditional Chinese"
+msgstr "Традиционален кинески"
+
+#: utils/timesince.py:12
+msgid "year"
+msgid_plural "years"
+msgstr[0] "година"
+msgstr[1] "години"
+
+#: utils/timesince.py:13
+msgid "month"
+msgid_plural "months"
+msgstr[0] "месец"
+msgstr[1] "месеци"
+
+#: utils/timesince.py:14
+msgid "week"
+msgid_plural "weeks"
+msgstr[0] "седмица"
+msgstr[1] "седмици"
+
+#: utils/timesince.py:15
+msgid "day"
+msgid_plural "days"
+msgstr[0] "ден"
+msgstr[1] "денови"
+
+#: utils/timesince.py:16
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "час"
+msgstr[1] "часови"
+
+#: utils/timesince.py:17
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "минута"
+msgstr[1] "минути"
+
+#: utils/dates.py:6
+msgid "Monday"
+msgstr "понеделник"
+
+#: utils/dates.py:6
+msgid "Tuesday"
+msgstr "вторник"
+
+#: utils/dates.py:6
+msgid "Wednesday"
+msgstr "среда"
+
+#: utils/dates.py:6
+msgid "Thursday"
+msgstr "четврток"
+
+#: utils/dates.py:6
+msgid "Friday"
+msgstr "петок"
+
+#: utils/dates.py:7
+msgid "Saturday"
+msgstr "сабота"
+
+#: utils/dates.py:7
+msgid "Sunday"
+msgstr "недела"
+
+#: utils/dates.py:14
+msgid "January"
+msgstr "јануари"
+
+#: utils/dates.py:14
+msgid "February"
+msgstr "февруари"
+
+#: utils/dates.py:14 utils/dates.py:27
+msgid "March"
+msgstr "март"
+
+#: utils/dates.py:14 utils/dates.py:27
+msgid "April"
+msgstr "април"
+
+#: utils/dates.py:14 utils/dates.py:27
+msgid "May"
+msgstr "мај"
+
+#: utils/dates.py:14 utils/dates.py:27
+msgid "June"
+msgstr "јуни"
+
+#: utils/dates.py:15 utils/dates.py:27
+msgid "July"
+msgstr "јули"
+
+#: utils/dates.py:15
+msgid "August"
+msgstr "август"
+
+#: utils/dates.py:15
+msgid "September"
+msgstr "септември"
+
+#: utils/dates.py:15
+msgid "October"
+msgstr "октомври"
+
+#: utils/dates.py:15
+msgid "November"
+msgstr "ноември"
+
+#: utils/dates.py:16
+msgid "December"
+msgstr "декември"
+
+#: utils/dates.py:19
+msgid "jan"
+msgstr "јан"
+
+#: utils/dates.py:19
+msgid "feb"
+msgstr "фев"
+
+#: utils/dates.py:19
+msgid "mar"
+msgstr "мар"
+
+#: utils/dates.py:19
+msgid "apr"
+msgstr "апр"
+
+#: utils/dates.py:19
+msgid "may"
+msgstr "мај"
+
+#: utils/dates.py:19
+msgid "jun"
+msgstr "јун"
+
+#: utils/dates.py:20
+msgid "jul"
+msgstr "јул"
+
+#: utils/dates.py:20
+msgid "aug"
+msgstr "авг"
+
+#: utils/dates.py:20
+msgid "sep"
+msgstr "сеп"
+
+#: utils/dates.py:20
+msgid "oct"
+msgstr "окт"
+
+#: utils/dates.py:20
+msgid "nov"
+msgstr "ное"
+
+#: utils/dates.py:20
+msgid "dec"
+msgstr "дек"
+
+#: utils/dates.py:27
+msgid "Jan."
+msgstr "јан."
+
+#: utils/dates.py:27
+msgid "Feb."
+msgstr "фев."
+
+#: utils/dates.py:28
+msgid "Aug."
+msgstr "авг."
+
+#: utils/dates.py:28
+msgid "Sept."
+msgstr "сеп."
+
+#: utils/dates.py:28
+msgid "Oct."
+msgstr "окт."
+
+#: utils/dates.py:28
+msgid "Nov."
+msgstr "ное."
+
+#: utils/dates.py:28
+msgid "Dec."
+msgstr "дек."
+
+#: utils/translation/trans_real.py:362
+msgid "DATE_FORMAT"
+msgstr "N j, Y"
+
+#: utils/translation/trans_real.py:363
+msgid "DATETIME_FORMAT"
+msgstr "N j, Y, P"
+
+#: utils/translation/trans_real.py:364
+msgid "TIME_FORMAT"
+msgstr "P"
+
+#: utils/translation/trans_real.py:380
+msgid "YEAR_MONTH_FORMAT"
+msgstr "F Y"
+
+#: utils/translation/trans_real.py:381
+msgid "MONTH_DAY_FORMAT"
+msgstr "F j"
+
+#: 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 знаци."
+
+#: 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 <a href=\"password/\">change "
+"password form</a>."
+msgstr "Користете '[algo]$[salt]$[hexdigest]' или користете ја <a href=\"password/\">формата за промена на лозинката</a>."
+
+#: 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 ""
+"<h3>By %s:</h3>\n"
+"<ul>\n"
+msgstr ""
+"<h3>Од %s:</h3>\n"
+"<ul>\n"
+
+#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
+#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169
+msgid "All"
+msgstr "Сите"
+
+#: contrib/admin/filterspecs.py:109
+msgid "Any date"
+msgstr "Било кој датум"
+
+#: contrib/admin/filterspecs.py:110
+msgid "Today"
+msgstr "Денеска"
+
+#: contrib/admin/filterspecs.py:113
+msgid "Past 7 days"
+msgstr "Последните 7 дена"
+
+#: contrib/admin/filterspecs.py:115
+msgid "This month"
+msgstr "Овој месец"
+
+#: contrib/admin/filterspecs.py:117
+msgid "This year"
+msgstr "Оваа година"
+
+#: contrib/admin/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"
+"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
+"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
+"select the bookmarklet from any page in the site. Note that some of these\n"
+"bookmarklets require you to be viewing the site from a computer designated\n"
+"as \"internal\" (talk to your system administrator if you aren't sure if\n"
+"your computer is \"internal\").</p>\n"
+msgstr ""
+"\n"
+"<p class=\"help\">За да инсталирате обележувачи, влечете ја врската до "
+"вашата\n"
+"лента со алатки, или кликнете со десното копче и додадете го во вашите \n"
+"обележувачи. Сега може да го изберете обележувачот од било која страница "
+"на \n"
+"сајтот. Имајте на ум дека за некои од овие обележувачи е потребно да го "
+"гледате \n"
+"сајтот од компјутер кој е означен како „внатрешен“ (разговарајте со вашиот \n"
+"администратор ако не сте сигурни).</p>\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 <em>(500)</em>"
+msgstr "Грешка со серверот <em>(500)</em>"
+
+#: contrib/admin/templates/admin/500.html:10
+msgid ""
+"There's been an error. It's been reported to the site administrators via e-"
+"mail and should be fixed shortly. Thanks for your patience."
+msgstr ""
+"Имаше грешка. Истата беше пријавена на администраторите и ќе биде поправена "
+"во брзо време. Ви благодариме за вашето трпение."
+
+#: contrib/admin/templates/admin/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 <strong>%(username)s</strong>."
+msgstr "Внесете нова лозинка за корисникот <strong>%(username)s</strong>."
+
+#: 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
+#, python-format
+msgid "Ensure this value has at most %d characters."
+msgstr "Осигурајте се дека оваа вредност има најмногу %d знаци."
+
+#: newforms/fields.py:103 newforms/fields.py:256
+#, 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
+#, python-format
+msgid "Ensure this value is less than or equal to %s."
+msgstr "Осигурајте се дека оваа вредност е помала или еднаква на %s."
+
+#: newforms/fields.py:130
+#, python-format
+msgid "Ensure this value is greater than or equal to %s."
+msgstr "Осигурајте се дека оваа вредност е поголема или еднаква со %s."
+
+#: newforms/fields.py:163
+msgid "Enter a valid date."
+msgstr "Внесете правилен датум."
+
+#: newforms/fields.py:190
+msgid "Enter a valid time."
+msgstr "Внесете правилно време."
+
+#: newforms/fields.py:226
+msgid "Enter a valid date/time."
+msgstr "Внесете правилен датум со време."
+
+#: newforms/fields.py:240
+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
+msgid "Enter a valid URL."
+msgstr "Внесете правилна адреса."
+
+#: newforms/fields.py:311
+msgid "This URL appears to be a broken link."
+msgstr "Оваа адреса изгледа дека не е достапна."
+
+#: 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
+msgid "Enter a list of values."
+msgstr "Внесете листа на вредности."
+
+#: newforms/fields.py:386
+#, 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/mk/LC_MESSAGES/djangojs.mo b/django/conf/locale/mk/LC_MESSAGES/djangojs.mo
new file mode 100644
index 0000000000..64971dc55e
--- /dev/null
+++ b/django/conf/locale/mk/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/django/conf/locale/mk/LC_MESSAGES/djangojs.po b/django/conf/locale/mk/LC_MESSAGES/djangojs.po
new file mode 100644
index 0000000000..0c06326fd5
--- /dev/null
+++ b/django/conf/locale/mk/LC_MESSAGES/djangojs.po
@@ -0,0 +1,119 @@
+# translation of djangojs.po to Macedonian
+#
+# Georgi Stanojevski <glisha@gmail.com>, 2006, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: djangojs\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-02-15 10:53+1100\n"
+"PO-Revision-Date: 2007-02-24 13:49+0100\n"
+"Last-Translator: Georgi Stanojevski <glisha@gmail.com>\n"
+"Language-Team: Macedonian <ossm-members@hedona.on.net.mk>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: contrib/admin/media/js/SelectFilter2.js:33
+#, perl-format
+msgid "Available %s"
+msgstr "Достапно %s"
+
+#: contrib/admin/media/js/SelectFilter2.js:41
+msgid "Choose all"
+msgstr "Избери ги сите"
+
+#: contrib/admin/media/js/SelectFilter2.js:46
+msgid "Add"
+msgstr "Додади"
+
+#: contrib/admin/media/js/SelectFilter2.js:48
+msgid "Remove"
+msgstr "Отстрани"
+
+#: contrib/admin/media/js/SelectFilter2.js:53
+#, perl-format
+msgid "Chosen %s"
+msgstr "Избрано %s"
+
+#: contrib/admin/media/js/SelectFilter2.js:54
+msgid "Select your choice(s) and click "
+msgstr "Означете го вашиот избор/и и кликнете"
+
+#: contrib/admin/media/js/SelectFilter2.js:59
+msgid "Clear all"
+msgstr "Исчисти ги сите"
+
+#: contrib/admin/media/js/dateparse.js: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/calendar.js:25
+msgid "S M T W T F S"
+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 "Утре"
+
+#: 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 "Скриј"
+
diff --git a/django/conf/locale/nl/LC_MESSAGES/django.mo b/django/conf/locale/nl/LC_MESSAGES/django.mo
index abc387aeea..f4be11f7c5 100644
--- a/django/conf/locale/nl/LC_MESSAGES/django.mo
+++ b/django/conf/locale/nl/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/nl/LC_MESSAGES/django.po b/django/conf/locale/nl/LC_MESSAGES/django.po
index bba721b56a..89862155d8 100644
--- a/django/conf/locale/nl/LC_MESSAGES/django.po
+++ b/django/conf/locale/nl/LC_MESSAGES/django.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Django 1.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 17:21+0200\n"
+"POT-Creation-Date: 2006-12-09 15:51+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Johan C. Stöver <johan@nilling.nl>\n"
"Language-Team: \n"
@@ -17,29 +17,34 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: db/models/manipulators.py:302
+#: db/models/manipulators.py:305
#, python-format
msgid "%(object)s with this %(type)s already exists for the given %(field)s."
msgstr ""
"%(object)s van het type %(type)s bestaat al voor het gegeven %(field)s."
-#: db/models/fields/related.py:43
+#: db/models/manipulators.py:306 contrib/admin/views/main.py:335
+#: contrib/admin/views/main.py:337 contrib/admin/views/main.py:339
+msgid "and"
+msgstr "en"
+
+#: db/models/fields/related.py:51
#, python-format
msgid "Please enter a valid %s."
-msgstr "Geef een geldig IP adres."
+msgstr "Geef een geldig %s veld."
-#: db/models/fields/related.py:579
+#: db/models/fields/related.py:618
msgid "Separate multiple IDs with commas."
msgstr "Scheid meerdere ID's door komma's."
-#: db/models/fields/related.py:581
+#: db/models/fields/related.py:620
msgid ""
"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr ""
"Houd \"Control\", of \"Command\" op een Mac, ingedrukt om meerdere te "
"selecteren."
-#: db/models/fields/related.py:625
+#: db/models/fields/related.py:664
#, python-format
msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
msgid_plural ""
@@ -47,150 +52,178 @@ msgid_plural ""
msgstr[0] "Geef een geldig %(self)s IDs. De waarde %(value)r is ongeldig."
msgstr[1] "Geef een geldig %(self)s IDs. De waarden %(value)r zijn ongeldig."
-#: db/models/fields/__init__.py:40
+#: db/models/fields/__init__.py:41
#, python-format
msgid "%(optname)s with this %(fieldname)s already exists."
msgstr "%(optname)s met deze %(fieldname)s bestaat al."
-#: 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
+#: db/models/fields/__init__.py:115 db/models/fields/__init__.py:266
+#: db/models/fields/__init__.py:560 db/models/fields/__init__.py:571
+#: forms/__init__.py:352 newforms/fields.py:60 newforms/fields.py:288
msgid "This field is required."
msgstr "Dit veld is verplicht."
-#: db/models/fields/__init__.py:337
+#: db/models/fields/__init__.py:349
msgid "This value must be an integer."
msgstr "De waarde moet een geheel getal zijn."
-#: db/models/fields/__init__.py:369
+#: db/models/fields/__init__.py:381
msgid "This value must be either True or False."
msgstr "De waarde moet of True (waar) of False (onwaar) zijn."
-#: db/models/fields/__init__.py:385
+#: db/models/fields/__init__.py:397
msgid "This field cannot be null."
msgstr "Dit veld mag niet leeg zijn."
-#: db/models/fields/__init__.py:468 core/validators.py:132
+#: db/models/fields/__init__.py:424 core/validators.py:147
+msgid "Enter a valid date in YYYY-MM-DD format."
+msgstr "Geef een geldige datum in JJJJ-MM-DD formaat."
+
+#: db/models/fields/__init__.py:486 core/validators.py:156
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr "Geef geldige datum/tijd in JJJJ-MM-DD UU:MM formaat."
-#: db/models/fields/__init__.py:562
+#: db/models/fields/__init__.py:580
msgid "Enter a valid filename."
msgstr "Geef een geldige bestandsnaam."
-#: conf/global_settings.py:37
+#: conf/global_settings.py:39
+msgid "Arabic"
+msgstr "Arabisch"
+
+#: conf/global_settings.py:40
msgid "Bengali"
msgstr "Bengaals"
-#: conf/global_settings.py:38
+#: conf/global_settings.py:41
msgid "Czech"
msgstr "Tjechisch"
-#: conf/global_settings.py:39
+#: conf/global_settings.py:42
msgid "Welsh"
msgstr "Wels"
-#: conf/global_settings.py:40
+#: conf/global_settings.py:43
msgid "Danish"
msgstr "Deens"
-#: conf/global_settings.py:41
+#: conf/global_settings.py:44
msgid "German"
msgstr "Duits"
-#: conf/global_settings.py:42
+#: conf/global_settings.py:45
msgid "Greek"
msgstr "Grieks"
-#: conf/global_settings.py:43
+#: conf/global_settings.py:46
msgid "English"
msgstr "Engels"
-#: conf/global_settings.py:44
+#: conf/global_settings.py:47
msgid "Spanish"
msgstr "Spaans"
-#: conf/global_settings.py:45
+#: conf/global_settings.py:48
+msgid "Argentinean Spanish"
+msgstr "Argentijns Spaans"
+
+#: conf/global_settings.py:49
+msgid "Finnish"
+msgstr "Fins"
+
+#: conf/global_settings.py:50
msgid "French"
msgstr "Frans"
-#: conf/global_settings.py:46
+#: conf/global_settings.py:51
msgid "Galician"
msgstr "Galicisch"
-#: conf/global_settings.py:47
+#: conf/global_settings.py:52
msgid "Hungarian"
msgstr "Hongaars"
-#: conf/global_settings.py:48
+#: conf/global_settings.py:53
msgid "Hebrew"
msgstr "Hebreews"
-#: conf/global_settings.py:49
+#: conf/global_settings.py:54
msgid "Icelandic"
msgstr "IJslands"
-#: conf/global_settings.py:50
+#: conf/global_settings.py:55
msgid "Italian"
msgstr "Italiaans"
-#: conf/global_settings.py:51
+#: conf/global_settings.py:56
msgid "Japanese"
msgstr "Japans"
-#: conf/global_settings.py:52
+#: conf/global_settings.py:57
msgid "Dutch"
msgstr "Nederlands"
-#: conf/global_settings.py:53
+#: conf/global_settings.py:58
msgid "Norwegian"
msgstr "Noors"
-#: conf/global_settings.py:54
+#: conf/global_settings.py:59
+msgid "Polish"
+msgstr "Pools"
+
+#: conf/global_settings.py:60
msgid "Brazilian"
msgstr "Braziliaans"
-#: conf/global_settings.py:55
+#: conf/global_settings.py:61
msgid "Romanian"
msgstr "Roemeens"
-#: conf/global_settings.py:56
+#: conf/global_settings.py:62
msgid "Russian"
msgstr "Russisch"
-#: conf/global_settings.py:57
+#: conf/global_settings.py:63
msgid "Slovak"
msgstr "Slovaaks"
-#: conf/global_settings.py:58
+#: conf/global_settings.py:64
msgid "Slovenian"
msgstr "Sloveens"
-#: conf/global_settings.py:59
+#: conf/global_settings.py:65
msgid "Serbian"
msgstr "Servisch"
-#: conf/global_settings.py:60
+#: conf/global_settings.py:66
msgid "Swedish"
msgstr "Zweeds"
-#: conf/global_settings.py:61
+#: conf/global_settings.py:67
+msgid "Tamil"
+msgstr "Tamil"
+
+#: conf/global_settings.py:68
+msgid "Turkish"
+msgstr "Turks"
+
+#: conf/global_settings.py:69
msgid "Ukrainian"
msgstr "Oekraïens"
-#: conf/global_settings.py:62
+#: conf/global_settings.py:70
msgid "Simplified Chinese"
msgstr "Vereenvoudigd Chinees"
-#: conf/global_settings.py:63
+#: conf/global_settings.py:71
msgid "Traditional Chinese"
msgstr "Traditioneel Chinees"
-#: core/validators.py:60
+#: core/validators.py:64
msgid "This value must contain only letters, numbers and underscores."
msgstr "Deze waarde mag alleen letters, getallen en liggende strepen bevatten."
-#: core/validators.py:64
+#: core/validators.py:68
msgid ""
"This value must contain only letters, numbers, underscores, dashes or "
"slashes."
@@ -199,58 +232,73 @@ msgstr ""
"bevatten."
#: core/validators.py:72
+msgid "This value must contain only letters, numbers, underscores or hyphens."
+msgstr ""
+"Deze waarde mag alleen letters, cijfers, liggende strepen en verbindingsstrepen "
+"bevatten."
+
+#: core/validators.py:76
msgid "Uppercase letters are not allowed here."
msgstr "Hoofdletters zijn hier niet toegestaan."
-#: core/validators.py:76
+#: core/validators.py:80
msgid "Lowercase letters are not allowed here."
msgstr "Kleine letters zijn hier niet toegestaan."
-#: core/validators.py:83
+#: core/validators.py:87
msgid "Enter only digits separated by commas."
msgstr "Geef alleen cijfers op, gescheiden door komma's."
-#: core/validators.py:95
+#: core/validators.py:99
msgid "Enter valid e-mail addresses separated by commas."
msgstr "Geef geldige e-mailadressen op, gescheiden door komma's."
-#: core/validators.py:99
+#: core/validators.py:103
msgid "Please enter a valid IP address."
msgstr "Geef een geldig IP adres op."
-#: core/validators.py:103
+#: core/validators.py:107
msgid "Empty values are not allowed here."
msgstr "Lege waarden zijn hier niet toegestaan."
-#: core/validators.py:107
+#: core/validators.py:111
msgid "Non-numeric characters aren't allowed here."
msgstr "Niet-numerieke karakters zijn hier niet toegestaan."
-#: core/validators.py:111
+#: core/validators.py:115
msgid "This value can't be comprised solely of digits."
msgstr "Deze waarde kan niet alleen uit cijfers bestaan."
-#: core/validators.py:116
+#: core/validators.py:120 newforms/fields.py:103
msgid "Enter a whole number."
msgstr "Geef een geheel getal op."
-#: core/validators.py:120
+#: core/validators.py:124
msgid "Only alphabetical characters are allowed here."
msgstr "Alleen alfabetische karakters zijn toegestaan"
-#: core/validators.py:124
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Geef een geldige datum in JJJJ-MM-DD formaat."
+#: core/validators.py:139
+msgid "Year must be 1900 or later."
+msgstr "Het jaartal moet 1900 of nieuwer zijn."
-#: core/validators.py:128
+#: core/validators.py:143
+#, python-format
+msgid "Invalid date: %s."
+msgstr "Ongeldige datum: %s"
+
+#: core/validators.py:152
msgid "Enter a valid time in HH:MM format."
msgstr "Geef een geldige tijd in UU:MM formaat."
-#: core/validators.py:136
+#: core/validators.py:161 newforms/fields.py:207
msgid "Enter a valid e-mail address."
msgstr "Geef een geldig e-mailadres op."
-#: core/validators.py:148
+#: core/validators.py:173 core/validators.py:442 forms/__init__.py:667
+msgid "No file was submitted. Check the encoding type on the form."
+msgstr "Er was geen bestand verstuurd. Controleer de encoding van het formulier."
+
+#: core/validators.py:177
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
@@ -258,28 +306,28 @@ msgstr ""
"Bestand ongeldig. Het bestand dat is gegeven is geen afbeelding of was "
"beschadigd."
-#: core/validators.py:155
+#: core/validators.py:184
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr "De URL %s wijst niet naar een afbeelding."
-#: core/validators.py:159
+#: core/validators.py:188
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr ""
"Telefoonnummers moeten volgens het XXX-XXX-XXXX formaat zijn. \"%s\" is "
"ongeldig."
-#: core/validators.py:167
+#: core/validators.py:196
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr "De URL %s wijst niet naar een QuickTime video."
-#: core/validators.py:171
+#: core/validators.py:200
msgid "A valid URL is required."
msgstr "Een geldige URL is vereist."
-#: core/validators.py:185
+#: core/validators.py:214
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
@@ -288,69 +336,84 @@ msgstr ""
"Geldige HTML is vereist. De specifieke fouten zijn:\n"
"%s"
-#: core/validators.py:192
+#: core/validators.py:221
#, python-format
msgid "Badly formed XML: %s"
msgstr "Foute XML: %s"
-#: core/validators.py:202
+#: core/validators.py:238
#, python-format
msgid "Invalid URL: %s"
msgstr "Ongeldige URL: %s"
-#: core/validators.py:206 core/validators.py:208
+#: core/validators.py:243 core/validators.py:245
#, python-format
msgid "The URL %s is a broken link."
msgstr "De URL %s is een niet werkende link."
-#: core/validators.py:214
+#: core/validators.py:251
msgid "Enter a valid U.S. state abbreviation."
msgstr "Geef een geldige afkorting van een VS staat."
-#: core/validators.py:229
+#: 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] "Pas op uw taalgebruik! Gebruik van %s niet toegestaan."
msgstr[1] "Pas op uw taalgebruik! Gebruik van de woorden %s niet toegestaan."
-#: core/validators.py:236
+#: core/validators.py:272
#, python-format
msgid "This field must match the '%s' field."
msgstr "Dit veld moet overeenkomen met het '%s' veld."
-#: core/validators.py:255
+#: core/validators.py:291
msgid "Please enter something for at least one field."
msgstr "Voer tenminste één veld in."
-#: core/validators.py:264 core/validators.py:275
+#: core/validators.py:300 core/validators.py:311
msgid "Please enter both fields or leave them both empty."
msgstr "Voer waarden in in beide velden of laat beide leeg."
-#: core/validators.py:282
+#: core/validators.py:318
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr "Dit veld moet opgegeven worden indien %(field)s %(value)s is"
-#: core/validators.py:294
+#: core/validators.py:330
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr "Dit veld moet worden opgegeven indien %(field)s niet %(value)s is"
-#: core/validators.py:313
+#: core/validators.py:349
msgid "Duplicate values are not allowed."
msgstr "Dubbele waarden zijn niet toegestaan."
-#: core/validators.py:336
+#: core/validators.py:364
+#, python-format
+msgid "This value must be between %s and %s."
+msgstr "De waarde moet tussen %s en %s zijn."
+
+#: core/validators.py:366
+#, python-format
+msgid "This value must be at least %s."
+msgstr "De waarde moet minimaal %s zijn."
+
+#: core/validators.py:368
+#, python-format
+msgid "This value must be no more than %s."
+msgstr "De waarde mag niet meer zijn dan %s."
+
+#: core/validators.py:404
#, python-format
msgid "This value must be a power of %s."
msgstr "De waarde moet een macht van %s zijn."
-#: core/validators.py:347
+#: core/validators.py:415
msgid "Please enter a valid decimal number."
msgstr "Geef een geldig decimaal getal."
-#: core/validators.py:349
+#: core/validators.py:419
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
@@ -358,7 +421,16 @@ msgid_plural ""
msgstr[0] "Geef een geldig decimaal getal met hooguit %s cijfer."
msgstr[1] "Geef een geldig decimaal getal met hooguit %s cijfers."
-#: core/validators.py:352
+#: 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] "Geef een geldig decimaal getal waarbij het gehele getal minimaal %s cijfer heeft."
+msgstr[1] "Geef een geldig decimaal getal waarbij het gehele getal minimaal %s cijfers heeft."
+
+#: core/validators.py:425
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
@@ -366,30 +438,30 @@ msgid_plural ""
msgstr[0] "Geef een decimaal getal met hooguit %s cijfer achter de komma."
msgstr[1] "Geef een decimaal getal met hooguit %s cijfers achter de komma."
-#: core/validators.py:362
+#: core/validators.py:435
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr "Zorg ervoor dat het bestand minstens %s bytes groot is."
-#: core/validators.py:363
+#: core/validators.py:436
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr "Zorg ervoor dat het bestand hoogstens %s bytes groot is."
-#: core/validators.py:376
+#: core/validators.py:453
msgid "The format for this field is wrong."
msgstr "Het formaat van dit veld is fout."
-#: core/validators.py:391
+#: core/validators.py:468
msgid "This field is invalid."
msgstr "Dit veld is ongeldig."
-#: core/validators.py:426
+#: core/validators.py:504
#, python-format
msgid "Could not retrieve anything from %s."
msgstr "Kan niks ophalen van %s."
-#: core/validators.py:429
+#: core/validators.py:507
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
@@ -397,7 +469,7 @@ msgstr ""
"De geretourneerde URL %(url)s bevat een ongeldige Content-Type '%"
"(contenttype)s."
-#: core/validators.py:462
+#: core/validators.py:540
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
@@ -406,7 +478,7 @@ msgstr ""
"Sluit de niet gesloten %(tag)s tag op regel %(line)s. (Regel start met \"%"
"(start)s\".)"
-#: core/validators.py:466
+#: core/validators.py:544
#, python-format
msgid ""
"Some text starting on line %(line)s is not allowed in that context. (Line "
@@ -415,7 +487,7 @@ msgstr ""
"Tekst beginnend op regel %(line)s is in deze context niet toegestaan. (Regel "
"start met \"%(start)s\".)"
-#: core/validators.py:471
+#: core/validators.py:549
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
@@ -424,7 +496,7 @@ msgstr ""
"\"%(attr)s\" op regel %(line)s is een ongeldig attribuut. (Regel start met "
"\"%(start)s\".)"
-#: core/validators.py:476
+#: core/validators.py:554
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
@@ -433,7 +505,7 @@ msgstr ""
"\"<%(tag)s>\" op regel %(line)s is een ongeldige tag. (Regel start met \"%"
"(start)s\".)"
-#: core/validators.py:480
+#: core/validators.py:558
#, python-format
msgid ""
"A tag on line %(line)s is missing one or more required attributes. (Line "
@@ -442,7 +514,7 @@ msgstr ""
"Een of meerdere attributen ontbreken bij een tag op regel %(line)s. (Regel "
"start met \"%(start)s\".)"
-#: core/validators.py:485
+#: core/validators.py:563
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
@@ -451,7 +523,15 @@ msgstr ""
"De \"%(attr)s\" attribuut op regel %(line)s heeft een ongeldige waarde. "
"(Regel start met \"%(start)s\".)"
-#: contrib/auth/forms.py:30
+#: contrib/auth/forms.py:16
+msgid "The two password fields didn't match."
+msgstr "De twee ingevulde wachtwoorden zijn niet gelijk."
+
+#: contrib/auth/forms.py:24
+msgid "A user with that username already exists."
+msgstr "Een gebruiker met deze gebruikersnaam bestaat al."
+
+#: contrib/auth/forms.py:52
msgid ""
"Your Web browser doesn't appear to have cookies enabled. Cookies are "
"required for logging in."
@@ -459,8 +539,7 @@ msgstr ""
"Het lijkt erop dat uw browser geen cookies accepteerd. Om aan te melden "
"moeten cookies worden geaccepteerd."
-#: contrib/auth/forms.py:36 contrib/auth/forms.py:41
-#: contrib/admin/views/decorators.py:9
+#: contrib/auth/forms.py:59 contrib/admin/views/decorators.py:10
msgid ""
"Please enter a correct username and password. Note that both fields are case-"
"sensitive."
@@ -468,79 +547,115 @@ msgstr ""
"Voer een correcte gebruikersnaam en wachtwoord in. Let op, de velden zijn "
"hoofdletter-gevoelig."
-#: contrib/auth/models.py:13 contrib/auth/models.py:26
+#: contrib/auth/forms.py:61
+msgid "This account is inactive."
+msgstr "Dit account is inactief."
+
+#: contrib/auth/forms.py:84
+msgid ""
+"That e-mail address doesn't have an associated user account. Are you sure "
+"you've registered?"
+msgstr "Dat e-mailadres heeft geen gerelateerd gebruikersaccount. Weet u zeker dat u zich heeft geregistreerd?"
+
+#: contrib/auth/forms.py:116
+msgid "The two 'new password' fields didn't match."
+msgstr "De twee 'nieuw wachtwoord' velden zijn niet gelijk."
+
+#: contrib/auth/forms.py:123
+msgid "Your old password was entered incorrectly. Please enter it again."
+msgstr "Uw oude wachtwoord was niet correct ingevoerd. Voert u het alstublieft opnieuw in."
+
+#: contrib/auth/models.py:38 contrib/auth/models.py:57
msgid "name"
msgstr "naam"
-#: contrib/auth/models.py:15
+#: contrib/auth/models.py:40
msgid "codename"
msgstr "codenaam"
-#: contrib/auth/models.py:17
+#: contrib/auth/models.py:42
msgid "permission"
msgstr "recht"
-#: contrib/auth/models.py:18 contrib/auth/models.py:27
+#: contrib/auth/models.py:43 contrib/auth/models.py:58
msgid "permissions"
msgstr "rechten"
-#: contrib/auth/models.py:29
+#: contrib/auth/models.py:60
msgid "group"
msgstr "groep"
-#: contrib/auth/models.py:30 contrib/auth/models.py:65
+#: contrib/auth/models.py:61 contrib/auth/models.py:100
msgid "groups"
msgstr "groepen"
-#: contrib/auth/models.py:55
+#: contrib/auth/models.py:90
msgid "username"
msgstr "gebruikersnaam"
-#: contrib/auth/models.py:56
+#: contrib/auth/models.py:90
+msgid ""
+"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
+"digits and underscores)."
+msgstr "Verplicht. 30 tekens of minder. Alleen alfanumerieke tekens (letters, cijfers en liggende strepen)."
+
+#: contrib/auth/models.py:91
msgid "first name"
msgstr "voornaam"
-#: contrib/auth/models.py:57
+#: contrib/auth/models.py:92
msgid "last name"
msgstr "achternaam"
-#: contrib/auth/models.py:58
+#: contrib/auth/models.py:93
msgid "e-mail address"
msgstr "e-mailadres"
-#: contrib/auth/models.py:59
+#: contrib/auth/models.py:94
msgid "password"
msgstr "wachtwoord"
-#: contrib/auth/models.py:59
+#: contrib/auth/models.py:94
msgid "Use '[algo]$[salt]$[hexdigest]'"
msgstr "Gebruik '[algo]$[salt]$[hexdigest]'"
-#: contrib/auth/models.py:60
+#: contrib/auth/models.py:95
msgid "staff status"
msgstr "staf status"
-#: contrib/auth/models.py:60
+#: contrib/auth/models.py:95
msgid "Designates whether the user can log into this admin site."
msgstr "Bepaalt of de gebruiker kan inloggen op deze admin site."
-#: contrib/auth/models.py:61
+#: contrib/auth/models.py:96
msgid "active"
msgstr "actief"
-#: contrib/auth/models.py:62
+#: contrib/auth/models.py:96
+msgid ""
+"Designates whether this user can log into the Django admin. Unselect this "
+"instead of deleting accounts."
+msgstr "Bepaalt of de gebruiker kan inloggen op deze admin site. U kunt dit uitvinken in plaats van een gebruiker te verwijderen."
+
+#: contrib/auth/models.py:97
msgid "superuser status"
msgstr "supergebruiker status"
-#: contrib/auth/models.py:63
+#: contrib/auth/models.py:97
+msgid ""
+"Designates that this user has all permissions without explicitly assigning "
+"them."
+msgstr "Bepaald dat deze gebruiker alle rechten heeft, zonder deze expliciet toe te wijzen."
+
+#: contrib/auth/models.py:98
msgid "last login"
msgstr "laatste aanmelding"
-#: contrib/auth/models.py:64
+#: contrib/auth/models.py:99
msgid "date joined"
msgstr "datum toegetreden"
-#: contrib/auth/models.py:66
+#: contrib/auth/models.py:101
msgid ""
"In addition to the permissions manually assigned, this user will also get "
"all permissions granted to each group he/she is in."
@@ -548,38 +663,42 @@ msgstr ""
"Bovenop de rechten welke handmatig zijn toegekend, krijgt deze gebruiker ook "
"alle rechten van de groepen waar hij of zij deel van uitmaakt."
-#: contrib/auth/models.py:67
+#: contrib/auth/models.py:102
msgid "user permissions"
msgstr "gebruikersrechten"
-#: contrib/auth/models.py:70
+#: contrib/auth/models.py:105
msgid "user"
msgstr "gebruiker"
-#: contrib/auth/models.py:71
+#: contrib/auth/models.py:106
msgid "users"
msgstr "gebruikers"
-#: contrib/auth/models.py:76
+#: contrib/auth/models.py:111
msgid "Personal info"
msgstr "Persoonlijke informatie"
-#: contrib/auth/models.py:77
+#: contrib/auth/models.py:112
msgid "Permissions"
msgstr "Rechten"
-#: contrib/auth/models.py:78
+#: contrib/auth/models.py:113
msgid "Important dates"
msgstr "Belangrijke data"
-#: contrib/auth/models.py:79
+#: contrib/auth/models.py:114
msgid "Groups"
msgstr "Groepen"
-#: contrib/auth/models.py:219
+#: contrib/auth/models.py:258
msgid "message"
msgstr "bericht"
+#: contrib/auth/views.py:39
+msgid "Logged out"
+msgstr "Afmelden"
+
#: contrib/admin/models.py:16
msgid "action time"
msgstr "actie tijd"
@@ -618,7 +737,7 @@ msgstr ""
"<ul>\n"
#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143
+#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169
msgid "All"
msgstr "Alle"
@@ -654,12 +773,12 @@ msgstr "Nee"
msgid "Unknown"
msgstr "Onbekend"
-#: contrib/admin/views/decorators.py:23
+#: contrib/admin/views/decorators.py:24
#: contrib/admin/templates/admin/login.html:25
msgid "Log in"
msgstr "Aanmelden"
-#: 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."
@@ -667,7 +786,7 @@ msgstr ""
"Uw sessie is verlopen, meldt u opnieuw aan. Maakt u geen zorgen: Uw bijdrage "
"is opgeslagen."
-#: 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."
@@ -675,196 +794,265 @@ msgstr ""
"Het lijkt erop dat uw browser geen cookies accepteerd. Zet het gebruik van "
"cookies aan in uw browser, laad deze pagina nogmaals en probeer het opnieuw."
-#: contrib/admin/views/decorators.py:82
+#: contrib/admin/views/decorators.py:83
msgid "Usernames cannot contain the '@' character."
msgstr "Gebruikersnamen mogen geen '@' bevatten."
-#: 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 "Uw e-mailadres is niet uw gebruikersnaam. Probeer '%s' eens."
-#: contrib/admin/views/main.py:226
+#: contrib/admin/views/main.py:223
msgid "Site administration"
msgstr "Site beheer"
-#: contrib/admin/views/main.py:260
+#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:18
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr "De %(name)s \"%(obj)s\" is toegevoegd."
-#: contrib/admin/views/main.py:264 contrib/admin/views/main.py:348
+#: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347
+#: contrib/admin/views/auth.py:23
msgid "You may edit it again below."
msgstr "U kunt dit hieronder weer bewerken."
-#: contrib/admin/views/main.py:272 contrib/admin/views/main.py:357
+#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356
#, python-format
msgid "You may add another %s below."
msgstr "U kunt hieronder de volgende %s toevoegen."
-#: contrib/admin/views/main.py:290
+#: contrib/admin/views/main.py:289
#, python-format
msgid "Add %s"
msgstr "Toevoegen %s"
-#: contrib/admin/views/main.py:336
+#: contrib/admin/views/main.py:335
#, python-format
msgid "Added %s."
msgstr "%s toegevoegd."
-#: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338
-#: contrib/admin/views/main.py:340
-msgid "and"
-msgstr "en"
-
-#: contrib/admin/views/main.py:338
+#: contrib/admin/views/main.py:337
#, python-format
msgid "Changed %s."
msgstr "Gewijzigd %s"
-#: contrib/admin/views/main.py:340
+#: contrib/admin/views/main.py:339
#, python-format
msgid "Deleted %s."
msgstr "%s verwijderd."
-#: contrib/admin/views/main.py:343
+#: contrib/admin/views/main.py:342
msgid "No fields changed."
msgstr "Geen velden gewijzigd."
-#: contrib/admin/views/main.py:346
+#: contrib/admin/views/main.py:345
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr "Het wijzigen van %(name)s \"%(obj)s\" is geslaagd."
-#: contrib/admin/views/main.py:354
+#: contrib/admin/views/main.py:353
#, python-format
msgid ""
"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
msgstr "De %(name)s \"%(obj)s\" was toegevoegd. U kunt het hieronder wijzigen."
-#: contrib/admin/views/main.py:392
+#: contrib/admin/views/main.py:391
#, python-format
msgid "Change %s"
msgstr "Wijzig %s"
-#: contrib/admin/views/main.py:470
+#: contrib/admin/views/main.py:473
#, python-format
msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
msgstr "Een of meer %(fieldname)s in %(name)s: %(obj)s"
-#: contrib/admin/views/main.py:475
+#: contrib/admin/views/main.py:478
#, python-format
msgid "One or more %(fieldname)s in %(name)s:"
msgstr "Een of meer %(fieldname)s in %(name)s:"
-#: contrib/admin/views/main.py:508
+#: contrib/admin/views/main.py:511
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr "De verwijdering van %(name)s \"%(obj)s\" is geslaagd."
-#: contrib/admin/views/main.py:511
+#: contrib/admin/views/main.py:514
msgid "Are you sure?"
msgstr "Weet u het zeker?"
-#: contrib/admin/views/main.py:533
+#: contrib/admin/views/main.py:536
#, python-format
msgid "Change history: %s"
msgstr "Wijzigingsgeschiedenis: %s"
-#: contrib/admin/views/main.py:565
+#: contrib/admin/views/main.py:570
#, python-format
msgid "Select %s"
msgstr "Selecteer %s"
-#: contrib/admin/views/main.py:565
+#: contrib/admin/views/main.py:570
#, python-format
msgid "Select %s to change"
msgstr "Selecteer %s om te wijzigen"
-#: contrib/admin/views/doc.py:277 contrib/admin/views/doc.py:286
-#: contrib/admin/views/doc.py:288 contrib/admin/views/doc.py:294
-#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:297
+#: contrib/admin/views/main.py:758
+msgid "Database error"
+msgstr "Database fout"
+
+#: 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 "filter:"
+
+#: 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 "App %r niet gevonden"
+
+#: contrib/admin/views/doc.py:171
+#, python-format
+msgid "Model %r not found in app %r"
+msgstr "Model %r niet gevonden in app %r"
+
+#: contrib/admin/views/doc.py:183
+#, python-format
+msgid "the related `%s.%s` object"
+msgstr "the related `%s.%s` object"
+
+#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205
+#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224
+msgid "model:"
+msgstr "model:"
+
+#: contrib/admin/views/doc.py:214
+#, python-format
+msgid "related `%s.%s` objects"
+msgstr "related `%s.%s` objects"
+
+#: contrib/admin/views/doc.py:219
+#, python-format
+msgid "all %s"
+msgstr "alle %s"
+
+#: contrib/admin/views/doc.py:224
+#, python-format
+msgid "number of %s"
+msgstr "nummer van %s"
+
+#: contrib/admin/views/doc.py:229
+#, python-format
+msgid "Fields on %s objects"
+msgstr "Velden van %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 "Geheel getal"
-#: contrib/admin/views/doc.py:278
+#: contrib/admin/views/doc.py:292
msgid "Boolean (Either True or False)"
msgstr "Boolean (True of False)"
-#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:296
+#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311
#, python-format
msgid "String (up to %(maxlength)s)"
msgstr "Karakterreeks (hooguit %(maxlength)s)"
-#: contrib/admin/views/doc.py:280
+#: contrib/admin/views/doc.py:294
msgid "Comma-separated integers"
msgstr "Komma-gescheiden gehele getallen"
-#: contrib/admin/views/doc.py:281
+#: contrib/admin/views/doc.py:295
msgid "Date (without time)"
msgstr "Datum (zonder tijd)"
-#: contrib/admin/views/doc.py:282
+#: contrib/admin/views/doc.py:296
msgid "Date (with time)"
msgstr "Datum (met tijd)"
-#: contrib/admin/views/doc.py:283
+#: contrib/admin/views/doc.py:297
msgid "E-mail address"
msgstr "E-mailadres"
-#: contrib/admin/views/doc.py:284 contrib/admin/views/doc.py:287
+#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299
+#: contrib/admin/views/doc.py:302
msgid "File path"
msgstr "Bestandspad"
-#: contrib/admin/views/doc.py:285
+#: contrib/admin/views/doc.py:300
msgid "Decimal number"
msgstr "Decimaal getal"
-#: contrib/admin/views/doc.py:289 contrib/comments/models.py:85
+#: contrib/admin/views/doc.py:304 contrib/comments/models.py:85
msgid "IP address"
msgstr "IP adres"
-#: contrib/admin/views/doc.py:291
+#: contrib/admin/views/doc.py:306
msgid "Boolean (Either True, False or None)"
msgstr "Boolean (True, False of None)"
-#: contrib/admin/views/doc.py:292
+#: contrib/admin/views/doc.py:307
msgid "Relation to parent model"
msgstr "Relatie tot ouder model"
-#: contrib/admin/views/doc.py:293
+#: contrib/admin/views/doc.py:308
msgid "Phone number"
msgstr "Telefoonnummer"
-#: contrib/admin/views/doc.py:298
+#: contrib/admin/views/doc.py:313
msgid "Text"
msgstr "Tekst"
-#: contrib/admin/views/doc.py:299
+#: contrib/admin/views/doc.py:314
msgid "Time"
msgstr "Tijd"
-#: contrib/admin/views/doc.py:300 contrib/flatpages/models.py:7
+#: contrib/admin/views/doc.py:315 contrib/flatpages/models.py:7
msgid "URL"
msgstr "URL"
-#: contrib/admin/views/doc.py:301
+#: contrib/admin/views/doc.py:316
msgid "U.S. state (two uppercase letters)"
msgstr "Staat van de VS (twee hoofdletters)"
-#: contrib/admin/views/doc.py:302
+#: contrib/admin/views/doc.py:317
msgid "XML text"
msgstr "XML Tekst"
-#: contrib/admin/templatetags/admin_list.py:228
+#: contrib/admin/views/doc.py:343
+#, python-format
+msgid "%s does not appear to be a urlpattern object"
+msgstr "%s lijkt geen urlpattern object te zijn"
+
+#: contrib/admin/views/auth.py:29
+msgid "Add user"
+msgstr "Gebruiker toevoegen"
+
+#: contrib/admin/templatetags/admin_list.py:230
msgid "All dates"
msgstr "Alle data"
+#: contrib/admin/templates/admin/pagination.html:10
+msgid "Show all"
+msgstr "Alles tonen"
+
#: 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:23
+#: contrib/admin/templates/admin/base.html:25
#: 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
@@ -875,7 +1063,7 @@ msgstr "Documentatie"
#: 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:23
+#: contrib/admin/templates/admin/base.html:25
#: 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
@@ -895,7 +1083,7 @@ msgstr "Wachtwoord wijzigen"
#: 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:23
+#: contrib/admin/templates/admin/base.html:25
#: 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
@@ -908,7 +1096,7 @@ msgstr "Wachtwoord wijzigen"
#: 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:8
+#: contrib/comments/templates/comments/form.html:6
msgid "Log out"
msgstr "Afmelden"
@@ -917,7 +1105,8 @@ msgstr "Afmelden"
#: 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/base.html:28
+#: contrib/admin/templates/admin/invalid_setup.html:4
+#: contrib/admin/templates/admin/base.html:30
#: 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
@@ -935,21 +1124,21 @@ msgstr "Verwijderen"
#: 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 ""
-"Het verwijderen van %(object_name)s '%(object)s' zal ook gerelateerde "
+"Het verwijderen van %(object_name)s '%(escaped_object)s' zal ook gerelateerde "
"objecten verwijderen. Echter u heeft geen rechten om de volgende typen "
"objecten te verwijderen:"
#: 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 ""
-"Weet u zeker dat u %(object_name)s \"%(object)s\" wilt verwijderen? Alle "
+"Weet u zeker dat u %(object_name)s \"%(escaped_object)s\" wilt verwijderen? Alle "
"volgende opjecten worden verwijderd:"
#: contrib/admin/templates/admin/delete_confirmation.html:26
@@ -963,7 +1152,7 @@ msgstr "Pagina niet gevonden"
#: contrib/admin/templates/admin/404.html:10
msgid "We're sorry, but the requested page could not be found."
-msgstr "Onze excuses, maar de gevraagde pagina komt niet voor."
+msgstr "Onze excuses, maar de gevraagde pagina bestaat niet."
#: contrib/admin/templates/admin/change_form.html:15
#: contrib/admin/templates/admin/index.html:28
@@ -995,8 +1184,8 @@ msgstr "Sortering:"
#: contrib/admin/templates/admin/filter.html:2
#, python-format
-msgid " By %(title)s "
-msgstr " Op %(title)s "
+msgid " By %(filter_title)s "
+msgstr " Op %(filter_title)s "
#: contrib/admin/templates/admin/submit_line.html:4
msgid "Save as new"
@@ -1024,6 +1213,11 @@ msgstr "%(name)s toevoegen"
msgid "Models available in the %(name)s application."
msgstr "Beschikbare modellen in de %(name)s toepassing."
+#: 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 "Wijzigen"
@@ -1096,10 +1290,33 @@ msgstr ""
"Er is een fout opgetreden. Dit is inmiddels doorgegeven aan de sitebeheerder "
"via e-mail en zal spoedig worden gerepareerd. Bedankt voor uw geduld."
+#: 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 "Er is iets mis met de database. Verzeker u ervan dat de benodigde tabellen zijn aangemaakt en dat de database toegankelijk is voor de juiste gebruiker."
+
#: contrib/admin/templates/admin/search_form.html:8
msgid "Go"
msgstr "Zoek"
+#: contrib/admin/templates/admin/search_form.html:10
+#, python-format
+msgid "1 result"
+msgid_plural "%(counter)s results"
+msgstr[0] "1 resultaat"
+msgstr[1] "%(counter)s resultaten"
+
+#: contrib/admin/templates/admin/search_form.html:10
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr "%(full_result_count)s totaal"
+
+#: contrib/admin/templates/admin/filters.html:4
+msgid "Filter"
+msgstr "Filter"
+
#: contrib/admin/templates/admin/login.html:17
#: contrib/comments/templates/comments/form.html:6
#: contrib/comments/templates/comments/form.html:8
@@ -1107,18 +1324,36 @@ msgid "Username:"
msgstr "Gebruikersnaam:"
#: contrib/admin/templates/admin/login.html:20
-#: contrib/comments/templates/comments/form.html:6
+#: contrib/comments/templates/comments/form.html:8
msgid "Password:"
msgstr "Wachtwoord:"
-#: contrib/admin/templates/admin/login.html:22
-msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-msgstr "Wachtwoord <a href=\"/password_reset/\">vergeten</a>?"
-
-#: contrib/admin/templates/admin/base.html:23
+#: contrib/admin/templates/admin/base.html:25
msgid "Welcome,"
msgstr "Welkom,"
+#: 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 "Vul allereerst een gebruikersnaam en wachtwoord in. Vervolgens kunt u de andere opties instellen."
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:12
+msgid "Username"
+msgstr "Gebruikersnaam"
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:18
+msgid "Password"
+msgstr "Wachtwoord"
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:23
+msgid "Password (again)"
+msgstr "Wachtwoord (nogmaals)"
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:24
+msgid "Enter the same password as above, for verification."
+msgstr "Vul hetzelfde wachtwoord als hierboven in, ter bevestiging."
+
#: contrib/admin/templates/admin_doc/bookmarklets.html:3
msgid "Bookmarklets"
msgstr "Bookmarklets"
@@ -1291,8 +1526,9 @@ 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 ""
-"Vanwege de beveiliging moet u uw oude en twee keer een nieuw wachtwoord"
-"invoeren, zodat we kunnen controleren of er geen typefouten zijn gemaakt."
+"Vanwege de beveiliging moet u uw oude en twee keer een nieuw "
+"wachtwoordinvoeren, zodat we kunnen controleren of er geen typefouten zijn "
+"gemaakt."
#: contrib/admin/templates/registration/password_change_form.html:17
msgid "Old password:"
@@ -1338,8 +1574,7 @@ msgstr "sites"
#: contrib/flatpages/models.py:8
msgid ""
"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Voorbeeld: '/about/contact/'. Zorg voor slashes aan het begin en eind."
+msgstr "Voorbeeld: '/about/contact/'. Zorg voor slashes aan het begin en eind."
#: contrib/flatpages/models.py:9
msgid "title"
@@ -1359,11 +1594,11 @@ msgstr "sjabloonnaam"
#: 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 ""
"Voorbeeld: 'flatpages/contact_page'. Als deze niet is opgegeven, dan wordt "
-"'flatpages/default' gebruikt."
+"'flatpages/default.html' gebruikt."
#: contrib/flatpages/models.py:14
msgid "registration required"
@@ -1407,11 +1642,11 @@ msgstr ""
"Dit kan een absoluut pad (zoals hierboven) zijn of een volledige URL "
"beginnend met 'http://'."
-#: contrib/redirects/models.py:12
+#: contrib/redirects/models.py:13
msgid "redirect"
msgstr "omleiding"
-#: contrib/redirects/models.py:13
+#: contrib/redirects/models.py:14
msgid "redirects"
msgstr "omleidingen"
@@ -1605,14 +1840,14 @@ msgstr "Ongeldige opmerkingen ID"
msgid "No voting for yourself"
msgstr "Niet op uzelf stemmen"
-#: 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 ""
"Deze waardering is verplicht omdat u tenminste één andere waardering hebt "
"ingevoerd."
-#: 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 "
@@ -1635,7 +1870,7 @@ msgstr[1] ""
"\n"
"%(text)s"
-#: contrib/comments/views/comments.py:117
+#: contrib/comments/views/comments.py:116
#, python-format
msgid ""
"This comment was posted by a sketchy user:\n"
@@ -1646,22 +1881,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 "Alleen POSTs zijn toegestaan"
-#: 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 "Een of meerdere verplichte velden zijn niet ingevuld"
-#: 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 "Iemand heeft het opmerkingenformulier gewijzigd (Beveilingsinbreuk)"
-#: 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 "
@@ -1675,7 +1910,7 @@ msgstr ""
msgid "The comment form didn't provide either 'preview' or 'post'"
msgstr "Het opmerkingenformulier heeft geen 'voorbeeld' of 'post'"
-#: contrib/comments/templates/comments/form.html:6
+#: contrib/comments/templates/comments/form.html:8
msgid "Forgotten your password?"
msgstr "Uw wachtwoord vergeten?"
@@ -1697,13 +1932,13 @@ msgstr "Optioneel"
msgid "Post a photo"
msgstr "Plaats een foto"
-#: contrib/comments/templates/comments/form.html:27
+#: contrib/comments/templates/comments/form.html:28
#: contrib/comments/templates/comments/freeform.html:5
msgid "Comment:"
msgstr "Opmerking:"
-#: 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 "Concept opmerking"
@@ -1711,70 +1946,85 @@ msgstr "Concept opmerking"
msgid "Your name:"
msgstr "Uw gebruikersnaam:"
-#: contrib/sessions/models.py:35
+#: contrib/sessions/models.py:51
msgid "session key"
msgstr "sessiesleutel"
-#: contrib/sessions/models.py:36
+#: contrib/sessions/models.py:52
msgid "session data"
msgstr "sessiegegevens"
-#: contrib/sessions/models.py:37
+#: contrib/sessions/models.py:53
msgid "expire date"
msgstr "verloopdatum"
-#: contrib/sessions/models.py:41
+#: contrib/sessions/models.py:57
msgid "session"
msgstr "sessie"
-#: contrib/sessions/models.py:42
+#: contrib/sessions/models.py:58
msgid "sessions"
msgstr "sessies"
-#: contrib/contenttypes/models.py:25
+#: contrib/contenttypes/models.py:20
msgid "python model class name"
msgstr "python model-class-naam"
-#: contrib/contenttypes/models.py:28
+#: contrib/contenttypes/models.py:23
msgid "content type"
msgstr "inhoudstype"
-#: contrib/contenttypes/models.py:29
+#: contrib/contenttypes/models.py:24
msgid "content types"
msgstr "inhoudstypen"
-#: forms/__init__.py:380
+#: forms/__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] "Zorg ervoor dat uw tekst korter is dan %s karakter."
msgstr[1] "Zorg ervoor dat uw tekst korter is dan %s karakters."
-#: forms/__init__.py:385
+#: forms/__init__.py:392
msgid "Line breaks are not allowed here."
msgstr "Regeleindes zijn niet toegestaan."
-#: forms/__init__.py:480 forms/__init__.py:551 forms/__init__.py:589
+#: forms/__init__.py:493 forms/__init__.py:566 forms/__init__.py:605
#, python-format
msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
msgstr "Selecteer een geldige keuze; '%(data)s is niet in %(choices)s."
-#: forms/__init__.py:645
+#: forms/__init__.py:669
msgid "The submitted file is empty."
msgstr "Het gegeven bestand is leeg."
-#: forms/__init__.py:699
+#: forms/__init__.py:725
msgid "Enter a whole number between -32,768 and 32,767."
msgstr "Geef een geheel getal op tussen -32.768 en 32.767."
-#: forms/__init__.py:708
+#: forms/__init__.py:735
msgid "Enter a positive number."
msgstr "Geef een geheel getal op."
-#: forms/__init__.py:717
+#: forms/__init__.py:745
msgid "Enter a whole number between 0 and 32,767."
msgstr "Geef een geheel getal op tussen 0 en 32.767."
+#: views/generic/create_update.py:43
+#, python-format
+msgid "The %(verbose_name)s was created successfully."
+msgstr "De %(verbose_name)s is succesvol aangemaakt."
+
+#: views/generic/create_update.py:117
+#, python-format
+msgid "The %(verbose_name)s was updated successfully."
+msgstr "De %(verbose_name)s is succesvol aangepast."
+
+#: views/generic/create_update.py:184
+#, python-format
+msgid "The %(verbose_name)s was deleted."
+msgstr "De %(verbose_name)s is verwijderd."
+
#: utils/dates.py:6
msgid "Monday"
msgstr "maandag"
@@ -1927,18 +2177,6 @@ msgstr "nov."
msgid "Dec."
msgstr "dec."
-#: utils/translation.py:360
-msgid "DATE_FORMAT"
-msgstr "d-n-Y"
-
-#: utils/translation.py:361
-msgid "DATETIME_FORMAT"
-msgstr "d-n-Y H:i"
-
-#: utils/translation.py:362
-msgid "TIME_FORMAT"
-msgstr "H:i"
-
#: utils/timesince.py:12
msgid "year"
msgid_plural "years"
@@ -1975,7 +2213,65 @@ msgid_plural "minutes"
msgstr[0] "minuut"
msgstr[1] "minuten"
-#: template/defaultfilters.py:379
+#: utils/translation/trans_real.py:362
+msgid "DATE_FORMAT"
+msgstr "j-n-Y"
+
+#: utils/translation/trans_real.py:363
+msgid "DATETIME_FORMAT"
+msgstr "j-n-Y H:i"
+
+#: utils/translation/trans_real.py:364
+msgid "TIME_FORMAT"
+msgstr "H:i"
+
+#: utils/translation/trans_real.py:380
+msgid "YEAR_MONTH_FORMAT"
+msgstr "F Y"
+
+#: utils/translation/trans_real.py:381
+msgid "MONTH_DAY_FORMAT"
+msgstr "j F"
+
+#: template/defaultfilters.py:401
msgid "yes,no,maybe"
msgstr "ja,nee,misschien"
+#: newforms/fields.py:82
+#, python-format
+msgid "Ensure this value has at most %d characters."
+msgstr "Zorg ervoor de waarde korter is dan %d tekens."
+
+#: newforms/fields.py:84
+#, python-format
+msgid "Ensure this value has at least %d characters."
+msgstr "Zorg ervoor dat uw tekst langer is dan %d tekens."
+
+#: newforms/fields.py:135
+msgid "Enter a valid date."
+msgstr "Geef een geldige datum op."
+
+#: newforms/fields.py:171
+msgid "Enter a valid date/time."
+msgstr "Geef een geldige datum/tijd op."
+
+#: newforms/fields.py:184
+msgid "Enter a valid value."
+msgstr "Geef een geldige waarde."
+
+#: newforms/fields.py:225 newforms/fields.py:245
+msgid "Enter a valid URL."
+msgstr "Geef een geldige URL op."
+
+#: newforms/fields.py:247
+msgid "This URL appears to be a broken link."
+msgstr "Deze URL schijnt niet te werken."
+
+#: newforms/fields.py:276 newforms/fields.py:301
+#, python-format
+msgid "Select a valid choice. %s is not one of the available choices."
+msgstr "Selecteer een geldige keuze. %s is niet onderdeel van de beschikbare keuzes ."
+
+#: newforms/fields.py:292
+msgid "Enter a list of values."
+msgstr "Geef een lijst op met waardes."
diff --git a/django/conf/locale/sl/LC_MESSAGES/django.mo b/django/conf/locale/sl/LC_MESSAGES/django.mo
index 12253610c4..a96fd554ef 100644
--- a/django/conf/locale/sl/LC_MESSAGES/django.mo
+++ b/django/conf/locale/sl/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/sl/LC_MESSAGES/django.po b/django/conf/locale/sl/LC_MESSAGES/django.po
index 5a9b6d6b46..b0617a5bd8 100644
--- a/django/conf/locale/sl/LC_MESSAGES/django.po
+++ b/django/conf/locale/sl/LC_MESSAGES/django.po
@@ -1,7 +1,9 @@
# translation of django.po to Slovenian
# Igor Kolar <ike@email.si), 2006.
# Nena Kojadin <nena@kiberpipa.org), 2006.
-# Jure Cuhalev <gandalf@owca.info>, 2006.
+# Jure Cuhalev <gandalf@owca.info>, 2006, 2007.
+# Gasper Koren <gasper@fdvinfo.net>, 2007.
+# Jozko Skrablin <jozko.skrablin@gmail.com>, 2007.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
msgid ""
@@ -9,8 +11,8 @@ msgstr ""
"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-05-16 10:13+0200\n"
-"PO-Revision-Date: 2006-07-29 11:52+0100\n"
-"Last-Translator: Jure Čuhalev <gandalf@owca.info>\n"
+"PO-Revision-Date: 2007-02-15 21:47+0100\n"
+"Last-Translator: Gasper Koren <gasper@fdvinfo.net>\n"
"Language-Team: Slovenian <lugos-slo@lugos.si>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -90,7 +92,7 @@ msgstr "je odstranjen/-a"
#: 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 "Odkljukaj, če je komntar neprimeren. Namesto komentarja bo vidno obvestilo \"Ta komentar je bil odstranjen\"."
+msgstr "Odkljukaj, če je komentar neprimeren. Namesto komentarja bo vidno obvestilo \"Ta komentar je bil odstranjen\"."
#: contrib/comments/models.py:91
msgid "comments"
@@ -126,7 +128,7 @@ msgstr "ip naslov"
#: contrib/comments/models.py:173
msgid "approved by staff"
-msgstr "potrjeno s strani osebja"
+msgstr "osebje je potrdilo"
#: contrib/comments/models.py:176
msgid "free comment"
@@ -174,7 +176,7 @@ msgstr "datum označitve (zastavice)"
#: contrib/comments/models.py:268
msgid "user flag"
-msgstr "uporabnikova zastavica"
+msgstr "uporabniška zastavica"
#: contrib/comments/models.py:269
msgid "user flags"
@@ -204,7 +206,7 @@ msgstr "Izbris opravil moderator %r"
#: contrib/comments/views/karma.py:19
msgid "Anonymous users cannot vote"
-msgstr "Anonimni upirabniki ne morejo glasovati"
+msgstr "Anonimni uporabniki ne morejo glasovati"
#: contrib/comments/views/karma.py:23
msgid "Invalid comment ID"
@@ -216,7 +218,7 @@ msgstr "Ni mogoče glasovati zase"
#: contrib/comments/views/comments.py:28
msgid "This rating is required because you've entered at least one other rating."
-msgstr "Moraš podati tole oceno, ker si podal vsaj še eno drugo oceno."
+msgstr "To oceno moraš podati, ker si podal vsaj še eno drugo oceno."
#: contrib/comments/views/comments.py:112
#, python-format
@@ -233,15 +235,15 @@ msgstr[0] ""
"\n"
"%(text)s"
msgstr[1] ""
-"Ta komentar je poslal uporabnik, ki je do zdaj poslal manj kot %(count)s komentar:\n"
+"Ta komentar je poslal uporabnik, ki je do zdaj poslal manj kot %(count)s komentarja:\n"
"\n"
"%(text)s"
msgstr[2] ""
-"Ta komentar je poslal uporabnik, ki je do zdaj poslal manj kot %(count)s komentarja:\n"
+"Ta komentar je poslal uporabnik, ki je do zdaj poslal manj kot %(count)s komentarje:\n"
"\n"
"%(text)s"
msgstr[3] ""
-"Ta komentar je poslal uporabnik, ki je do zdaj poslal manj kot %(count)s komentarje:\n"
+"Ta komentar je poslal uporabnik, ki je do zdaj poslal manj kot %(count)s komentarjev:\n"
"\n"
"%(text)s"
@@ -259,7 +261,7 @@ msgstr ""
#: contrib/comments/views/comments.py:189
#: contrib/comments/views/comments.py:280
msgid "Only POSTs are allowed"
-msgstr "Dovoljena je le metoda POST"
+msgstr "Dovoljena je le POST metoda"
#: contrib/comments/views/comments.py:193
#: contrib/comments/views/comments.py:284
@@ -398,7 +400,7 @@ msgstr "Neznano"
#: contrib/admin/models.py:16
msgid "action time"
-msgstr "čas oprave dejanja"
+msgstr "čas dejanja"
#: contrib/admin/models.py:19
msgid "object id"
@@ -410,7 +412,7 @@ msgstr "predstavitev objekta"
#: contrib/admin/models.py:21
msgid "action flag"
-msgstr "zastavica za določeno dejanje"
+msgstr "zastavica dejanja"
#: contrib/admin/models.py:22
msgid "change message"
@@ -432,7 +434,7 @@ msgstr "Vsi datumi"
#: contrib/auth/forms.py:36
#: contrib/auth/forms.py:41
msgid "Please enter a correct username and password. Note that both fields are case-sensitive."
-msgstr "Prosimo, vnesite veljavno uporabniško ime in geslo. Opomba: obe polji sta občutljivi na velikost črk"
+msgstr "Prosimo, vnesite veljavno uporabniško ime in geslo. Opomba: obe polji upoštevata velikost črk."
#: contrib/admin/views/decorators.py:23
#: contrib/admin/templates/admin/login.html:25
@@ -441,11 +443,11 @@ msgstr "Prijavite se"
#: 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 "Vaša seja je pretekla; prosimo, prijavite se znova. Ne skrbite, vaše objave so varno shranjene."
+msgstr "Vaša seja je pretekla; prosimo da se ponovno prijavite. Brez skrbi, vaše objave so varno shranjene."
#: 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 "Izgleda, da vaš brskalnik nima podpore za piškotke. Prosimo, vključite piškotke, znova naložite to stran in poskusite še enkrat."
+msgstr "Izgleda, da vaš brskalnik nima podpore za piškotke. Prosimo, vključite piškotke, osvežite stran in poskusite še enkrat."
#: contrib/admin/views/decorators.py:82
msgid "Usernames cannot contain the '@' character."
@@ -454,7 +456,7 @@ msgstr "Uporabniška imena ne smejo vsebovati znaka '@'."
#: contrib/admin/views/decorators.py:84
#, python-format
msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "Vaš e-mail naslov ne morete uporabljati kot uporabniško ime. Namesto tega uporabite '%s'."
+msgstr "Vaš e-main naslov ni vaše uporabniško ime. Poskusite uporabiti '%s'."
#: contrib/admin/views/main.py:226
msgid "Site administration"
@@ -484,7 +486,7 @@ msgstr "Dodaj %s"
#: contrib/admin/views/main.py:336
#, python-format
msgid "Added %s."
-msgstr "Dodal %s."
+msgstr "Dodan %s."
#: contrib/admin/views/main.py:336
#: contrib/admin/views/main.py:338
@@ -495,12 +497,12 @@ msgstr "in"
#: contrib/admin/views/main.py:338
#, python-format
msgid "Changed %s."
-msgstr "Spremenil %s."
+msgstr "Spremenjen %s."
#: contrib/admin/views/main.py:340
#, python-format
msgid "Deleted %s."
-msgstr "Izbrisal %s."
+msgstr "Izbrisn %s."
#: contrib/admin/views/main.py:343
msgid "No fields changed."
@@ -509,12 +511,12 @@ msgstr "Nobeno polje ni bilo spremenjeno."
#: contrib/admin/views/main.py:346
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" je bilo uspešno spremenjeno."
+msgstr "%(name)s \"%(obj)s\" je bil uspešno spremenjeno."
#: contrib/admin/views/main.py:354
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" je bilo uspešno dodano. Znova ga lahko urejate spodaj."
+msgstr "%(name)s \"%(obj)s\" je bil uspešno dodano. Ponovno ga lahko urejdite spodaj."
#: contrib/admin/views/main.py:392
#, python-format
@@ -534,7 +536,7 @@ msgstr "Eden ali več %(fieldname)s v %(name)s:"
#: contrib/admin/views/main.py:508
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" je bilo uspešno izbrisano."
+msgstr "%(name)s \"%(obj)s\" je bilo uspešno izbrisan."
#: contrib/admin/views/main.py:511
msgid "Are you sure?"
@@ -562,11 +564,11 @@ msgstr "Izberite %s, ki ga želite spremeniti"
#: contrib/admin/views/doc.py:295
#: contrib/admin/views/doc.py:297
msgid "Integer"
-msgstr "Število (integer)"
+msgstr "Celo število (integer)"
#: contrib/admin/views/doc.py:278
msgid "Boolean (Either True or False)"
-msgstr "Boolean (ali True ali False)"
+msgstr "Boolean (True ali False)"
#: contrib/admin/views/doc.py:279
#: contrib/admin/views/doc.py:296
@@ -576,19 +578,19 @@ msgstr "Niz (vse do %(maxlength)s)"
#: contrib/admin/views/doc.py:280
msgid "Comma-separated integers"
-msgstr "Z vejico ločeni integerji"
+msgstr "Z vejico ločena cela števila (integer)"
#: contrib/admin/views/doc.py:281
msgid "Date (without time)"
-msgstr "Datum (brez časa)"
+msgstr "Datum (brez ure)"
#: contrib/admin/views/doc.py:282
msgid "Date (with time)"
-msgstr "Datum (s časom)"
+msgstr "Datum (z uro)"
#: contrib/admin/views/doc.py:283
msgid "E-mail address"
-msgstr "E-naslov"
+msgstr "E-mail naslov"
#: contrib/admin/views/doc.py:284
#: contrib/admin/views/doc.py:287
@@ -601,7 +603,7 @@ msgstr "Decimalno število"
#: contrib/admin/views/doc.py:291
msgid "Boolean (Either True, False or None)"
-msgstr "Boolean (ali True ali False ali None)"
+msgstr "Boolean (True, False ali None)"
#: contrib/admin/views/doc.py:292
msgid "Relation to parent model"
@@ -701,11 +703,11 @@ 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 "Ta objekt nima zgodovine. Verjetno ni bil dodan preko te administratorske strani."
+msgstr "Ta objekt nima zgodovine sprememb. Verjetno ni bil dodan preko te strani za administracijo."
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
-msgstr "Django site admin"
+msgstr "Vmesnik za administracijo Django strani"
#: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration"
@@ -717,7 +719,7 @@ msgstr "Napaka strežnika"
#: contrib/admin/templates/admin/500.html:6
msgid "Server error (500)"
-msgstr "Django napaka (500)"
+msgstr "Napaka strežnika (500)"
#: contrib/admin/templates/admin/500.html:9
msgid "Server Error <em>(500)</em>"
@@ -725,7 +727,7 @@ msgstr "Napaka strežnika <em>(500)</em>"
#: contrib/admin/templates/admin/500.html:10
msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience."
-msgstr "Prišlo je do nepričakovane napake. Administratorji strani so že obveščeni prekoe-pošte in naj bi jo v kratkem odpravili. Hvala za vaše potrpljenje."
+msgstr "Prišlo je do nepričakovane napake. Administrator je preko e-pošte prejel obvestilo o napaki in jo bo v kratkem odpravil. Hvala za potrpljenje."
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
@@ -734,7 +736,7 @@ msgstr "Strani ni mogoče najti"
#: contrib/admin/templates/admin/404.html:10
msgid "We're sorry, but the requested page could not be found."
-msgstr "Se opravičujemo, a zahtevane strani ni mogoče najti."
+msgstr "Opravičujemo se, a zahtevane strani ni mogoče najti."
#: contrib/admin/templates/admin/index.html:17
#, python-format
@@ -773,7 +775,7 @@ msgstr "Dodaj %(name)s"
#: contrib/admin/templates/admin/login.html:22
msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-msgstr "Ste <a href=\"/password_reset/\">pozabili geslo</a>"
+msgstr "Ste <a href=\"/password_reset/\">pozabili geslo</a>?"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
@@ -787,7 +789,7 @@ msgstr "Izbriši"
#: 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 "Izbris %(object_name)s '%(object)s' bi pomenil izbris povezanih objektov, vendarvi nimate dovoljenja za izbris naslednjih tipov objektov:"
+msgstr "Izbris %(object_name)s '%(object)s' bi pomenil izbris povezanih objektov, vendar nimate dovoljenja za izbris naslednjih tipov objektov:"
#: contrib/admin/templates/admin/delete_confirmation.html:21
#, python-format
@@ -815,17 +817,17 @@ msgstr "Poglej na strani"
msgid "Please correct the error below."
msgid_plural "Please correct the errors below."
msgstr[0] "Prosimo, odpravite sledečo napako."
-msgstr[1] "Prosimo, odpravite sledeče napake."
-msgstr[2] "Prosimo, odpravite sledeči napaki."
+msgstr[1] "Prosimo, odpravite sledeči napaki."
+msgstr[2] "Prosimo, odpravite sledeče napake."
msgstr[3] "Prosimo, odpravite sledeče napake."
#: contrib/admin/templates/admin/change_form.html:48
msgid "Ordering"
-msgstr "Urejanje"
+msgstr "Razvrščanje"
#: contrib/admin/templates/admin/change_form.html:51
msgid "Order:"
-msgstr "Uredi:"
+msgstr "Razvrsti:"
#: contrib/admin/templates/admin/submit_line.html:4
msgid "Save as new"
@@ -853,7 +855,7 @@ msgstr "Sprememba gesla"
#: contrib/admin/templates/registration/password_change_done.html:6
#: contrib/admin/templates/registration/password_change_done.html:10
msgid "Password change successful"
-msgstr "Geslo uspešno spremenjeno"
+msgstr "Sprememba gesla je uspela"
#: contrib/admin/templates/registration/password_change_done.html:12
msgid "Your password was changed."
@@ -864,23 +866,23 @@ msgstr "Vaše geslo je bilo spremenjeno."
#: contrib/admin/templates/registration/password_reset_form.html:10
#: contrib/admin/templates/registration/password_reset_done.html:4
msgid "Password reset"
-msgstr "Obnova gesla"
+msgstr "Ponastavitev gesla"
#: 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 "Ste pozabili geslo? Vnesite vaš e-naslov spodaj in mi vam bomo poslali novo geslo."
+msgstr "Ste pozabili geslo? Vnesite vaš e-mail naslov in poslali vam bomo novo geslo."
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "E-mail address:"
-msgstr "E-naslov"
+msgstr "Naslov e-pošte:"
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "Reset my password"
-msgstr "Obnova gesla"
+msgstr "Ponastavi moje geslo"
#: contrib/admin/templates/registration/logged_out.html:8
msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Hvala, ker ste si vzeli nekaj časa za to spletno stran."
+msgstr "Hvala, ker ste si danes vzeli nekaj časa za to spletno stran."
#: contrib/admin/templates/registration/logged_out.html:10
msgid "Log in again"
@@ -889,15 +891,15 @@ msgstr "Ponovna prijava"
#: contrib/admin/templates/registration/password_reset_done.html:6
#: contrib/admin/templates/registration/password_reset_done.html:10
msgid "Password reset successful"
-msgstr "Geslo je bilo uspešno obnovljeno"
+msgstr "Ponastavitev gesla je uspela"
#: 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 "Po e-pošti smo vam poslali novo geslo.Morali bi ga prejeti v kratkem"
+msgstr "Po e-pošti smo vam poslali novo geslo. Morali bi ga prejeti v kratkem"
#: 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 "Prosim, vnesite vaše staro geslo (zaradi varnosti) in nato še dvakrat novo(da preverimo, da se niste zatipkali)"
+msgstr "Prosim, vnesite vaše staro geslo (zaradi varnosti) in nato še dvakrat novo (da preverimo, da se niste zatipkali)"
#: contrib/admin/templates/registration/password_change_form.html:17
msgid "Old password:"
@@ -913,16 +915,16 @@ msgstr "Potrditev gesla:"
#: contrib/admin/templates/registration/password_change_form.html:23
msgid "Change my password"
-msgstr "Sprememba gesla"
+msgstr "Spremeni moje geslo"
#: contrib/admin/templates/registration/password_reset_email.html:2
msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "To pošto ste dobili, ker ste zahtevali spremembo gesla"
+msgstr "Ta e-mail ste dobili, ker ste zahtevali ponastavitev gesla"
#: contrib/admin/templates/registration/password_reset_email.html:3
#, python-format
msgid "for your user account at %(site_name)s"
-msgstr "za vaš uporabniški račun pri %(site_name)s"
+msgstr "za vaš uporabniški račun na %(site_name)s"
#: contrib/admin/templates/registration/password_reset_email.html:5
#, python-format
@@ -935,7 +937,7 @@ msgstr "Geslo lahko spremenite z obiskom strani:"
#: contrib/admin/templates/registration/password_reset_email.html:11
msgid "Your username, in case you've forgotten:"
-msgstr "Vaše uporabniško ime (za vsak primer)"
+msgstr "Vaše uporabniško ime (za vsak primer):"
#: contrib/admin/templates/registration/password_reset_email.html:13
msgid "Thanks for using our site!"
@@ -955,6 +957,7 @@ msgid "Documentation bookmarklets"
msgstr "Dokumentacijske zaznamkice"
#: contrib/admin/templates/admin_doc/bookmarklets.html:9
+#, fuzzy
msgid ""
"\n"
"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
@@ -966,11 +969,11 @@ msgid ""
msgstr ""
"\n"
"<p class=\"help\">Za inštalacijo zaznamkic povlečite povezavo v orodno vrstico\n"
-"z zaznamki, ali kliknite z desno miškino tipko na povezavo in jo dodajte med zaznamkeZdaj lahko uporabite zaznamek s katere koli strani. Opomba: nekatere teh stranilahko gledate le z internega računalnika (preverite s sistemskim administratorjem)</p>\n"
+"z zaznamki, ali kliknite z desno miškino tipko na povezavo in jo dodajte med zaznamke. Zdaj lahko izberete zaznamkico s katerekoli strani. Opomba: nekatere izmed teh strani lahko gledate le z računalnika, ki je označen kot \"notranji\" (v kolikor niste prepričani, če je vaš računalnik označen kot \"notranji\"se obrnite na sistemskega administratorja).</p>\n"
#: contrib/admin/templates/admin_doc/bookmarklets.html:19
msgid "Documentation for this page"
-msgstr "Dokumentacija za to stran"
+msgstr "Dokumentacija te strani"
#: contrib/admin/templates/admin_doc/bookmarklets.html:20
msgid "Jumps you from any page to the documentation for the view that generates that page."
@@ -986,7 +989,7 @@ msgstr "Pokaže content-type in unikatni ID za strani, ki predstavljajo en objek
#: contrib/admin/templates/admin_doc/bookmarklets.html:25
msgid "Edit this object (current window)"
-msgstr "Uredi trenutni objekt (v trenutnem oknu)"
+msgstr "Uredi objekt (v trenutnem oknu)"
#: contrib/admin/templates/admin_doc/bookmarklets.html:26
msgid "Jumps to the admin page for pages that represent a single object."
@@ -1006,7 +1009,7 @@ msgstr "Datum:"
#: contrib/admin/templates/widget/date_time.html:4
msgid "Time:"
-msgstr "Čas:"
+msgstr "Ura:"
#: contrib/admin/templates/widget/file.html:2
msgid "Currently:"
@@ -1022,7 +1025,7 @@ msgstr "preusmeritev iz"
#: contrib/redirects/models.py:8
msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'."
-msgstr "To mora biti absolutna pot, izključujoč domeno. Primer: '/events/search'-"
+msgstr "Ta pot mora biti absolutna, brez imena domene. Primer: '/events/search'"
#: contrib/redirects/models.py:9
msgid "redirect to"
@@ -1030,7 +1033,7 @@ msgstr "preusmeri na"
#: contrib/redirects/models.py:10
msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'."
-msgstr "To je ali absolutna pot (kot zgoraj) ali popoln URL naslov (začne se z 'http://')"
+msgstr "To je lahko absolutna pot (kot zgoraj) ali popoln URL naslov (ki se začne s 'http://')"
#: contrib/redirects/models.py:12
msgid "redirect"
@@ -1042,7 +1045,7 @@ msgstr "preusmeritve"
#: contrib/flatpages/models.py:8
msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "Primer: '/about/contact/'. Mora vsebovati / (poševnico) na začetku in koncu."
+msgstr "Primer: '/about/contact/'. Preverite ali vsebuje / (poševnico) na začetku in koncu vnosa."
#: contrib/flatpages/models.py:9
msgid "title"
@@ -1070,7 +1073,7 @@ msgstr "obvezna registracija"
#: contrib/flatpages/models.py:14
msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Če je to polje odkljukano, si lahko to stran ogledajo le registrirani uporabniki."
+msgstr "Če je to polje izbrano, si bodo to stran lahko ogledali le prijavljeni uporabniki."
#: contrib/flatpages/models.py:18
msgid "flat page"
@@ -1121,7 +1124,7 @@ msgstr "priimek"
#: contrib/auth/models.py:58
msgid "e-mail address"
-msgstr "e-naslov"
+msgstr "e-mail naslov"
#: contrib/auth/models.py:59
msgid "password"
@@ -1157,7 +1160,7 @@ msgstr "član od"
#: 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 "Polek ročno določenih dovoljenj bo ta uporabnik dobil tudi vsa dovoljenja,ki pripadajo vsem skupinah, v katerih je."
+msgstr "Poleg ročno določenih dovoljenj bo ta uporabnik dobil tudi vsa dovoljenja, ki pripadajo skupinam, katerih član je."
#: contrib/auth/models.py:67
msgid "user permissions"
@@ -1201,19 +1204,19 @@ msgstr "python ime razreda modela"
#: contrib/contenttypes/models.py:28
msgid "content type"
-msgstr "content type"
+msgstr "tip vsebine"
#: contrib/contenttypes/models.py:29
msgid "content types"
-msgstr "content types"
+msgstr "tipi vsebine"
#: contrib/sessions/models.py:35
msgid "session key"
-msgstr "sejni ključ"
+msgstr "ključ seje"
#: contrib/sessions/models.py:36
msgid "session data"
-msgstr "podatki v seji"
+msgstr "podatki seje"
#: contrib/sessions/models.py:37
msgid "expire date"
@@ -1415,50 +1418,50 @@ msgstr "dec."
#: utils/timesince.py:12
msgid "year"
msgid_plural "years"
-msgstr[0] "let"
-msgstr[1] "leto"
-msgstr[2] "leti"
-msgstr[3] "leta"
+msgstr[0] "leto"
+msgstr[1] "leti"
+msgstr[2] "leta"
+msgstr[3] "let"
#: utils/timesince.py:13
msgid "month"
msgid_plural "months"
-msgstr[0] "mesecev"
-msgstr[1] "mesec"
-msgstr[2] "meseca"
-msgstr[3] "meseci"
+msgstr[0] "mesec"
+msgstr[1] "meseca"
+msgstr[2] "meseci"
+msgstr[3] "mesecev"
#: utils/timesince.py:14
msgid "week"
msgid_plural "weeks"
-msgstr[0] "tednov"
-msgstr[1] "teden"
-msgstr[2] "tedna"
+msgstr[0] "teden"
+msgstr[1] "tedna"
+msgstr[2] "tedni"
msgstr[3] "tednov"
#: utils/timesince.py:15
msgid "day"
msgid_plural "days"
-msgstr[0] "dni"
-msgstr[1] "dan"
-msgstr[2] "dneva"
+msgstr[0] "dan"
+msgstr[1] "dneva"
+msgstr[2] "dnevi"
msgstr[3] "dni"
#: utils/timesince.py:16
msgid "hour"
msgid_plural "hours"
-msgstr[0] "ur"
-msgstr[1] "ura"
-msgstr[2] "uri"
-msgstr[3] "ure"
+msgstr[0] "ura"
+msgstr[1] "uri"
+msgstr[2] "ure"
+msgstr[3] "ur"
#: utils/timesince.py:17
msgid "minute"
msgid_plural "minutes"
-msgstr[0] "minut"
-msgstr[1] "minuta"
-msgstr[2] "minuti"
-msgstr[3] "minute"
+msgstr[0] "minuta"
+msgstr[1] "minuti"
+msgstr[2] "minute"
+msgstr[3] "minut"
#: conf/global_settings.py:37
msgid "Bengali"
@@ -1562,7 +1565,7 @@ msgstr "Ukrajinski"
#: conf/global_settings.py:62
msgid "Simplified Chinese"
-msgstr "Poenostavljen kitajski"
+msgstr "Poenostavljeni kitajski"
#: conf/global_settings.py:63
msgid "Traditional Chinese"
@@ -1570,27 +1573,27 @@ msgstr "Tradicionalni kitajski"
#: core/validators.py:60
msgid "This value must contain only letters, numbers and underscores."
-msgstr "To polje lahko vsebuje le črke, števila in podčrtaje (_)."
+msgstr "Ta vrednost mora vsebovati le črke, števila in podčrtaje (_)."
#: core/validators.py:64
msgid "This value must contain only letters, numbers, underscores, dashes or slashes."
-msgstr "To polje lahko vsebuje le črke, števila, podčrtaje, poševnice ali pomišljaje."
+msgstr "Ta vrednost mora vsebovati le črke, števila, podčrtaje, poševnice ali pomišljaje."
#: core/validators.py:72
msgid "Uppercase letters are not allowed here."
-msgstr "Velike tiskane črke tu niso dovoljene."
+msgstr "Velike tiskane črke niso dovoljene."
#: core/validators.py:76
msgid "Lowercase letters are not allowed here."
-msgstr "Majhne tiskane črke tu niso dovoljene."
+msgstr "Majhne tiskane črke niso dovoljene."
#: core/validators.py:83
msgid "Enter only digits separated by commas."
-msgstr "Vnesite števila, ločena z vejicami."
+msgstr "Vnesite samo števila, ločena z vejicami."
#: core/validators.py:95
msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Vnesite veljavne e-pošne naslove, ločene z vejicami."
+msgstr "Vnesite veljavne e-mail naslove, ločene z vejicami."
#: core/validators.py:99
msgid "Please enter a valid IP address."
@@ -1602,11 +1605,11 @@ msgstr "Prazne vrednosti tu niso dovoljene."
#: core/validators.py:107
msgid "Non-numeric characters aren't allowed here."
-msgstr "Nenumerične vrednosti tukaj niso dovoljne."
+msgstr "Nenumerični znaki tukaj niso dovoljne."
#: core/validators.py:111
msgid "This value can't be comprised solely of digits."
-msgstr "To polje ne sme vsebovati le števk."
+msgstr "Ta vrednost ne sme vsebovati le števk."
#: core/validators.py:116
msgid "Enter a whole number."
@@ -1614,7 +1617,7 @@ msgstr "Vnesite celo število."
#: core/validators.py:120
msgid "Only alphabetical characters are allowed here."
-msgstr "Le črke iz abecede so dovoljene tukaj."
+msgstr "Tukaj so dovoljene samo črke."
#: core/validators.py:124
msgid "Enter a valid date in YYYY-MM-DD format."
@@ -1631,11 +1634,11 @@ msgstr "Vnesite veljavni datum/čas v zapisu YYYY-MM-DD HH:MM (leto-mesec-dan ur
#: core/validators.py:136
msgid "Enter a valid e-mail address."
-msgstr "Vnesite veljavni e-naslov."
+msgstr "Vnesite veljaven 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 "Uploadjate veljavno sliko. Trenutna datoteka ni bila niti slika niti okvarjena slika."
+msgstr "Naložite veljavno sliko. Naložena datoteka ni bila slika ali pa je bila le-ta okvarjena."
#: core/validators.py:155
#, python-format
@@ -1654,7 +1657,7 @@ msgstr "URL %s ne kaže na veljavni QuickTime video."
#: core/validators.py:171
msgid "A valid URL is required."
-msgstr "Potreben je veljavni URL naslov."
+msgstr "Potreben je veljaven URL naslov."
#: core/validators.py:185
#, python-format
@@ -1662,24 +1665,24 @@ msgid ""
"Valid HTML is required. Specific errors are:\n"
"%s"
msgstr ""
-"Potreben je veljavni HTML. Trenutni ima sledeče napake:\n"
+"Potreben je veljaven HTML. Trenutni ima sledeče napake:\n"
"%s"
#: core/validators.py:192
#, python-format
msgid "Badly formed XML: %s"
-msgstr "Pokvarjen XML: %s"
+msgstr "Nepravilen XML: %s"
#: core/validators.py:202
#, python-format
msgid "Invalid URL: %s"
-msgstr "Neveljavni URL naslov: %s"
+msgstr "Neveljaven URL naslov: %s"
#: core/validators.py:206
#: core/validators.py:208
#, python-format
msgid "The URL %s is a broken link."
-msgstr "URL povezava %s je polomljena."
+msgstr "URL povezava %s ne deluje."
#: core/validators.py:214
msgid "Enter a valid U.S. state abbreviation."
@@ -1690,7 +1693,7 @@ msgstr "Vnesi veljavno okrajšavo za ameriško zvezno državo."
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] "Pazite na jezik! Beseda %s tu ni dovoljena."
-msgstr[1] "Pazite na jezik! Besede %s tu niso dovoljene."
+msgstr[1] "Pazite na jezik! Besedi %s tu nista dovoljeni."
msgstr[2] "Pazite na jezik! Besede %s tu niso dovoljene."
msgstr[3] "Pazite na jezik! Besede %s tu niso dovoljene."
@@ -1701,22 +1704,22 @@ msgstr "To polje mora ustrezati polju '%s'."
#: core/validators.py:255
msgid "Please enter something for at least one field."
-msgstr "Prosim, vnesite nekaj v vsaj eno od polj."
+msgstr "Prosim, vnesite nekaj v vsaj eno izmed polj."
#: core/validators.py:264
#: core/validators.py:275
msgid "Please enter both fields or leave them both empty."
-msgstr "Prosimo, izpolnite obe polji ali ju pustite obe prazni."
+msgstr "Prosimo, izpolnite obe polji ali pa pustite obe prazni."
#: core/validators.py:282
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
-msgstr "To polje mora biti izpolnjeno, če je %(field)s %(value)s"
+msgstr "To polje mora biti podano, če je %(field)s %(value)s"
#: core/validators.py:294
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "To polje mora biti izpolnjeno, če ni %(field)s %(value)s"
+msgstr "To polje mora biti podano, če ni %(field)s %(value)s"
#: core/validators.py:313
msgid "Duplicate values are not allowed."
@@ -1729,7 +1732,7 @@ msgstr "Ta vrednost mora biti potenca od %s."
#: core/validators.py:347
msgid "Please enter a valid decimal number."
-msgstr "Prosim vnesite decimalno število."
+msgstr "Prosim vnesite veljavno decimalno število."
#: core/validators.py:349
#, python-format
@@ -1745,19 +1748,19 @@ msgstr[3] "Prosimo, vnesite veljavno decimalno število z največ %s števkami."
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] "Prosimo, vnesite veljavno decimalno število z največ %s decimalnim mestom."
-msgstr[1] "Prosimo, vnesite veljavno decimalno število z največ %s decimalnimi mesti."
+msgstr[1] "Prosimo, vnesite veljavno decimalno število z največ %s decimalnima mestoma."
msgstr[2] "Prosimo, vnesite veljavno decimalno število z največ %s decimalnimi mesti."
msgstr[3] "Prosimo, vnesite veljavno decimalno število z največ %s decimalnimi mesti."
#: core/validators.py:362
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Prosimo, poskrbite, da bo prenesena datoteka velika vsaj %s bajtov."
+msgstr "Prosimo, poskrbite, da bo naložena datoteka velika vsaj %s bajtov."
#: core/validators.py:363
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Poskrbite, da bo prenesena datoteka velika največ %s bajtov."
+msgstr "Poskrbite, da bo naložena datoteka velika največ %s bajtov."
#: core/validators.py:376
msgid "The format for this field is wrong."
@@ -1770,7 +1773,7 @@ msgstr "To polje ni veljavno."
#: core/validators.py:426
#, python-format
msgid "Could not retrieve anything from %s."
-msgstr "Iz %s nisem mogel izločiti ničesar."
+msgstr "Iz %s nisem mogel pridobiti ničesar."
#: core/validators.py:429
#, python-format
@@ -1780,7 +1783,7 @@ msgstr "URL %(url)s je vrnil neveljavni 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 "Prosimo, zaprite nezaprto %(tag)s oznako v vrstici %(line)s. (Vrstica se začne z \"%(start)s\".)"
+msgstr "Prosimo, zaprite %(tag)s oznako v vrstici %(line)s. (Vrstica se začne z \"%(start)s\".)"
#: core/validators.py:466
#, python-format
@@ -1790,7 +1793,7 @@ msgstr "Tekst z začetka vrstice %(line)s ni dovoljen v tem kontekstu. (Vrstica
#: 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\" v vrstici %(line)s je neveljavna oznaka. (Vrstica se začne z \"%(start)s\".)"
+msgstr "\"%(attr)s\" v vrstici %(line)s je neveljaven atribut. (Vrstica se začne z \"%(start)s\".)"
#: core/validators.py:476
#, python-format
@@ -1800,12 +1803,12 @@ msgstr "\"<%(tag)s>\" v vrstici %(line)s je neveljavna oznaka. (Vrstica se začn
#: 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 "Oznaki na vrstici %(line)s manjka eden ali več zahtevanih parametrov. (Vrstica se začne z \"%(start)s\".)"
+msgstr "Oznaki v vrstici %(line)s manjka eden ali več zahtevanih parametrov. (Vrstica se začne z \"%(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 "Atribut \"%(attr)s\" v vrstici %(line)s vsebuje neveljavno vrednost. (Vrstica se začne z \"%(start)s\".)"
+msgstr "Parameter \"%(attr)s\" v vrstici %(line)s vsebuje neveljavno vrednost. (Vrstica se začne z \"%(start)s\".)"
#: db/models/manipulators.py:302
#, python-format
@@ -1827,7 +1830,7 @@ msgstr "To polje je obvezno"
#: db/models/fields/__init__.py:337
msgid "This value must be an integer."
-msgstr "Ta vrednost mora biti število."
+msgstr "Ta vrednost mora biti celo število."
#: db/models/fields/__init__.py:369
msgid "This value must be either True or False."
@@ -1858,8 +1861,8 @@ msgstr "Držite \"Control\" (ali \"Command\" na Mac-u), za izbiro več kot enega
#, 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] "Prosimo, vnesite veljavne %(self)s ID-je. Vrednost %(value)r ni veljavna."
-msgstr[1] "Prosimo, vnesite veljavni %(self)s ID. Vrednosti %(value)r niso veljavne."
+msgstr[0] "Prosimo, vnesite veljavne %(self)s ID-e. Vrednost %(value)r ni veljavna."
+msgstr[1] "Prosimo, vnesite veljavne %(self)s ID-je. Vrednosti %(value)r nista veljavni."
msgstr[2] "Prosimo, vnesite veljavne %(self)s ID-je. Vrednosti %(value)r niso veljavne."
msgstr[3] "Prosimo, vnesite veljavne %(self)s ID-je. Vrednosti %(value)r niso veljavne."
@@ -1867,8 +1870,8 @@ msgstr[3] "Prosimo, vnesite veljavne %(self)s ID-je. Vrednosti %(value)r niso ve
#, python-format
msgid "Ensure your text is less than %s character."
msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Poskrbite, da bo tekst krajši od %s znakov."
-msgstr[1] "Poskrbite, da bo tekst krajši od %s znaka."
+msgstr[0] "Poskrbite, da bo tekst krajši od %s znaka."
+msgstr[1] "Poskrbite, da bo tekst krajši od %s znakov."
msgstr[2] "Poskrbite, da bo tekst krajši od %s znakov."
msgstr[3] "Poskrbite, da bo tekst krajši od %s znakov."
@@ -1885,11 +1888,11 @@ msgstr "Izberite veljavno možnost; '%(data)s' ni v %(choices)s."
#: forms/__init__.py:645
msgid "The submitted file is empty."
-msgstr "Poslano polje je prazno."
+msgstr "Poslana datoteka je prazna."
#: forms/__init__.py:699
msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Vnesite celo število med -32,768 in 32,767."
+msgstr "Vnesite celo število med -32.768 in 32.767."
#: forms/__init__.py:708
msgid "Enter a positive number."
@@ -1897,11 +1900,11 @@ msgstr "Vnesite pozitivno število."
#: forms/__init__.py:717
msgid "Enter a whole number between 0 and 32,767."
-msgstr "Vnesite celo število med 0 in 32,767."
+msgstr "Vnesite celo število med 0 in 32.767."
#: template/defaultfilters.py:379
msgid "yes,no,maybe"
-msgstr "ja,ne,morda"
+msgstr "da,ne,morda"
msgid "Comment"
msgstr "Komentar"
diff --git a/django/conf/locale/sr/LC_MESSAGES/django.mo b/django/conf/locale/sr/LC_MESSAGES/django.mo
index 06ac3cde5a..c942838b09 100644
--- a/django/conf/locale/sr/LC_MESSAGES/django.mo
+++ b/django/conf/locale/sr/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/sr/LC_MESSAGES/django.po b/django/conf/locale/sr/LC_MESSAGES/django.po
index ad45c28457..3d7cef4f2b 100644
--- a/django/conf/locale/sr/LC_MESSAGES/django.po
+++ b/django/conf/locale/sr/LC_MESSAGES/django.po
@@ -3,101 +3,99 @@ msgstr ""
"Project-Id-Version: Django Serbian (latin) translation v1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-05-16 10:11+0200\n"
-"PO-Revision-Date: 2006-01-15 11:21+0100\n"
-"Last-Translator: Nebojša Đorđević <nesh@studioquattro.co.yu>\n"
-"Language-Team: Nesh <nesh@studioquatro.co.yu> & Petar <petar.maric@gmail."
-"com>\n"
+"PO-Revision-Date: 2007-02-20 18:50+0100\n"
+"Last-Translator: Petar Marić <petar.maric@gmail.com>\n"
+"Language-Team: Nesh <nesh@studioquatro.co.yu> & Petar <petar.maric@gmail.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Poedit-Language: Serbian\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Poedit-Country: YUGOSLAVIA\n"
"X-Poedit-SourceCharset: utf-8\n"
"X-Poedit-Basepath: ../../../../\n"
-#: contrib/comments/models.py:67 contrib/comments/models.py:166
+#: contrib/comments/models.py:67
+#: contrib/comments/models.py:166
msgid "object ID"
-msgstr "id objekta"
+msgstr "ID objekta"
#: contrib/comments/models.py:68
msgid "headline"
msgstr "naslov"
-#: 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 "komentar"
#: contrib/comments/models.py:70
msgid "rating #1"
-msgstr "rejting #1"
+msgstr "ocena #1"
#: contrib/comments/models.py:71
msgid "rating #2"
-msgstr "rejting #2"
+msgstr "ocena #2"
#: contrib/comments/models.py:72
msgid "rating #3"
-msgstr "rejting #3"
+msgstr "ocena #3"
#: contrib/comments/models.py:73
msgid "rating #4"
-msgstr "rejting #4"
+msgstr "ocena #4"
#: contrib/comments/models.py:74
msgid "rating #5"
-msgstr "rejting #5"
+msgstr "ocena #5"
#: contrib/comments/models.py:75
msgid "rating #6"
-msgstr "rejting #6"
+msgstr "ocena #6"
#: contrib/comments/models.py:76
msgid "rating #7"
-msgstr "rejting #7"
+msgstr "ocena #7"
#: contrib/comments/models.py:77
msgid "rating #8"
-msgstr "rejting #8"
+msgstr "ocena #8"
#: contrib/comments/models.py:82
msgid "is valid rating"
-msgstr "da li je rejting validan"
+msgstr "da li je ocena validna"
-#: 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/vreme slanja"
-#: contrib/comments/models.py:84 contrib/comments/models.py:170
+#: contrib/comments/models.py:84
+#: contrib/comments/models.py:170
msgid "is public"
msgstr "da li je javni"
-#: contrib/comments/models.py:85 contrib/admin/views/doc.py:289
+#: contrib/comments/models.py:85
+#: contrib/admin/views/doc.py:289
msgid "IP address"
msgstr "IP adresa"
#: contrib/comments/models.py:86
msgid "is removed"
-msgstr "obrisan je"
+msgstr "da li je obrisan"
#: 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 ""
-"Selektujte ako je komentar neodgovarajući. Biće ispisano \"Ovaj komentar je "
-"obrisan\" umesto teksta komentara."
+msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead."
+msgstr "Izaberite ako je komentar neodgovarajući. Biće ispisano \"Ovaj komentar je obrisan\" umesto teksta komentara."
#: contrib/comments/models.py:91
-#, fuzzy
msgid "comments"
-msgstr "komentar"
+msgstr "komentari"
-#: contrib/comments/models.py:131 contrib/comments/models.py:207
+#: contrib/comments/models.py:131
+#: contrib/comments/models.py:207
msgid "Content object"
-msgstr "Objekt sa sadržajem"
+msgstr "Objekat sa sadržajem"
#: contrib/comments/models.py:159
#, python-format
@@ -108,7 +106,7 @@ msgid ""
"\n"
"http://%(domain)s%(url)s"
msgstr ""
-"Poslao %(user)s u %(date)s\n"
+"Poslao %(user)s dana %(date)s\n"
"\n"
"%(comment)s\n"
"\n"
@@ -124,17 +122,15 @@ msgstr "ip adresa"
#: contrib/comments/models.py:173
msgid "approved by staff"
-msgstr "odobreno od moderatora"
+msgstr "odobreno od strane moderatora"
#: contrib/comments/models.py:176
-#, fuzzy
msgid "free comment"
-msgstr "Slobodan komentar"
+msgstr "slobodan komentar"
#: contrib/comments/models.py:177
-#, fuzzy
msgid "free comments"
-msgstr "Slobodni komentari"
+msgstr "slobodni komentari"
#: contrib/comments/models.py:233
msgid "score"
@@ -145,19 +141,17 @@ msgid "score date"
msgstr "datum rezultata"
#: contrib/comments/models.py:237
-#, fuzzy
msgid "karma score"
-msgstr "\"Karma\" rezultat"
+msgstr "\"karma\" rezultat"
#: contrib/comments/models.py:238
-#, fuzzy
msgid "karma scores"
-msgstr "\"Karma\" rezultati"
+msgstr "\"karma\" rezultati"
#: contrib/comments/models.py:242
#, python-format
msgid "%(score)d rating by %(user)s"
-msgstr "Rezultat %(score)d od %(user)s"
+msgstr "Ocena %(score)d od strane %(user)s"
#: contrib/comments/models.py:258
#, python-format
@@ -166,42 +160,38 @@ msgid ""
"\n"
"%(text)s"
msgstr ""
-"Ovaj komentar je markiran od %(user)s:\n"
+"Ovaj komentar je označen od %(user)s:\n"
"\n"
"%(text)s"
#: contrib/comments/models.py:265
msgid "flag date"
-msgstr "datum markiranja"
+msgstr "datum označavanja"
#: contrib/comments/models.py:268
-#, fuzzy
msgid "user flag"
-msgstr "Korisnički marker"
+msgstr "korisnička oznaka"
#: contrib/comments/models.py:269
-#, fuzzy
msgid "user flags"
-msgstr "Korisnički markeri"
+msgstr "korisničke oznake"
#: contrib/comments/models.py:273
#, python-format
msgid "Flag by %r"
-msgstr "%r je markirao"
+msgstr "%r je označio"
#: contrib/comments/models.py:278
msgid "deletion date"
msgstr "datum brisanja"
#: contrib/comments/models.py:280
-#, fuzzy
msgid "moderator deletion"
-msgstr "Brisanje od strane moderatora"
+msgstr "brisanje od strane moderatora"
#: contrib/comments/models.py:281
-#, fuzzy
msgid "moderator deletions"
-msgstr "Brisanja od strane moderatora"
+msgstr "brisanja od strane moderatora"
#: contrib/comments/models.py:285
#, python-format
@@ -218,43 +208,39 @@ msgstr "Neispravan ID komentara"
#: contrib/comments/views/karma.py:25
msgid "No voting for yourself"
-msgstr "Ne možete da glasate sami za sebe"
+msgstr "Ne možete glasati sami za sebe"
# nesh: grrrrr, ala je rogobatno
+# petar: malo sam ga izmenio da bude jasniji
#: contrib/comments/views/comments.py:28
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr "Ovaj rejting je obavezan pošto ste uneli još najmanje jedan rejting."
+msgid "This rating is required because you've entered at least one other rating."
+msgstr "Ova ocena je obavezna pošto ste uneli bar jednu ocenu."
#: contrib/comments/views/comments.py:112
#, 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] ""
-"Ovaj komentar je poslat od korisnika koji je poslao manje od %(count)s "
-"komentara:\n"
+"Ovaj komentar je poslat od korisnika koji je poslao manje od %(count)s komentara:\n"
"\n"
"%(text)s"
msgstr[1] ""
-"Ovaj komentar je poslat od korisnika koji je poslao manje od %(count)s "
-"komentara:\n"
+"Ovaj komentar je poslat od korisnika koji je poslao manje od %(count)s komentara:\n"
"\n"
"%(text)s"
msgstr[2] ""
-"Ovaj komentar je poslat od korisnika koji je poslao manje od %(count)s "
-"komentara:\n"
+"Ovaj komentar je poslat od korisnika koji je poslao manje od %(count)s komentara:\n"
"\n"
"%(text)s"
# nesh: skethcy???
+# petar: Pojma nemam sta im to znaci
#: contrib/comments/views/comments.py:117
#, python-format
msgid ""
@@ -262,7 +248,7 @@ msgid ""
"\n"
"%(text)s"
msgstr ""
-"Ovaj komentar je poslat od \"sketcy\" korisnika:\n"
+"Komentar je poslat od strane \"sketchy\" korisnika:\n"
"\n"
"%(text)s"
@@ -274,25 +260,22 @@ msgstr "Jedino je POST dozvoljen"
#: contrib/comments/views/comments.py:193
#: contrib/comments/views/comments.py:284
msgid "One or more of the required fields wasn't submitted"
-msgstr "Jedno ili više obaveznih polja nije poslato."
+msgstr "Jedno ili više obaveznih polja nije poslato"
#: contrib/comments/views/comments.py:197
#: contrib/comments/views/comments.py:286
msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Neko je menjao form za komentare (povreda sigurnosti)"
+msgstr "Neko je menjao formu za komentare (povreda sigurnosti)"
#: contrib/comments/views/comments.py:207
#: contrib/comments/views/comments.py:292
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"Form komentara ima neispravni 'target' parametar -- ID objekta nije ispravan"
+msgid "The comment form had an invalid 'target' parameter -- the object ID was invalid"
+msgstr "Forma komentara ima neispravni 'target' parametar -- ID objekta je neispravan"
#: contrib/comments/views/comments.py:257
#: contrib/comments/views/comments.py:321
msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "Ovaj komentar nije koristio 'preview' ili 'post'"
+msgstr "Ovaj komentar nije koristio ni 'preview' ni 'post'"
#: contrib/comments/templates/comments/form.html:6
#: contrib/comments/templates/comments/form.html:8
@@ -306,9 +289,8 @@ msgid "Password:"
msgstr "Lozinka:"
#: contrib/comments/templates/comments/form.html:6
-#, fuzzy
msgid "Forgotten your password?"
-msgstr "Izmeni moju lozinku"
+msgstr "Zaboravili ste lozinku?"
#: contrib/comments/templates/comments/form.html:8
#: contrib/admin/templates/admin/object_history.html:3
@@ -329,43 +311,39 @@ msgstr "Izmeni moju lozinku"
#: contrib/admin/templates/admin_doc/index.html:4
#: contrib/admin/templates/admin_doc/model_index.html:5
msgid "Log out"
-msgstr "Odjavi se"
+msgstr "Odjavite se"
#: contrib/comments/templates/comments/form.html:12
-#, fuzzy
msgid "Ratings"
-msgstr "rejting #1"
+msgstr "Ocene"
#: contrib/comments/templates/comments/form.html:12
#: contrib/comments/templates/comments/form.html:23
msgid "Required"
-msgstr ""
+msgstr "Obavezan unos"
#: contrib/comments/templates/comments/form.html:12
#: contrib/comments/templates/comments/form.html:23
msgid "Optional"
-msgstr ""
+msgstr "Opcioni unos"
#: contrib/comments/templates/comments/form.html:23
msgid "Post a photo"
-msgstr ""
+msgstr "Pošaljite sliku"
#: contrib/comments/templates/comments/form.html:27
#: contrib/comments/templates/comments/freeform.html:5
-#, fuzzy
msgid "Comment:"
-msgstr "Komentar"
+msgstr "Komentar:"
#: contrib/comments/templates/comments/form.html:32
#: contrib/comments/templates/comments/freeform.html:9
-#, fuzzy
msgid "Preview comment"
-msgstr "Slobodan komentar"
+msgstr "Pregled komentara"
#: contrib/comments/templates/comments/freeform.html:4
-#, fuzzy
msgid "Your name:"
-msgstr "korisničko ime"
+msgstr "Vaše ime:"
#: contrib/admin/filterspecs.py:40
#, python-format
@@ -373,10 +351,11 @@ msgid ""
"<h3>By %s:</h3>\n"
"<ul>\n"
msgstr ""
-"<h3>Od %s:</h3>\n"
+"<h3>Po %s:</h3>\n"
"<ul>\n"
-#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
+#: contrib/admin/filterspecs.py:70
+#: contrib/admin/filterspecs.py:88
#: contrib/admin/filterspecs.py:143
msgid "All"
msgstr "Sve"
@@ -391,15 +370,15 @@ msgstr "Danas"
#: contrib/admin/filterspecs.py:113
msgid "Past 7 days"
-msgstr "Zadnjih sedam dana"
+msgstr "U zadnjih 7 dana"
#: contrib/admin/filterspecs.py:115
msgid "This month"
-msgstr "Ovaj mesec"
+msgstr "Ovoga meseca"
#: contrib/admin/filterspecs.py:117
msgid "This year"
-msgstr "Ova godina"
+msgstr "Ove godine"
#: contrib/admin/filterspecs.py:143
msgid "Yes"
@@ -415,7 +394,7 @@ msgstr "Nepoznato"
#: contrib/admin/models.py:16
msgid "action time"
-msgstr "vreme akcije"
+msgstr "vreme aktivnosti"
#: contrib/admin/models.py:19
msgid "object id"
@@ -427,53 +406,42 @@ msgstr "opis objekta"
#: contrib/admin/models.py:21
msgid "action flag"
-msgstr "akcija"
+msgstr "oznaka aktivnosti"
#: contrib/admin/models.py:22
msgid "change message"
-msgstr "opis promene"
+msgstr "opis izmene"
#: contrib/admin/models.py:25
msgid "log entry"
-msgstr "unos u dnevnik izmena"
+msgstr "unos u dnevniku izmena"
#: contrib/admin/models.py:26
msgid "log entries"
-msgstr "unosi u dnevnik izmena"
+msgstr "unosi u dnevniku izmena"
#: contrib/admin/templatetags/admin_list.py:228
msgid "All dates"
msgstr "Svi datumi"
-#: contrib/admin/views/decorators.py:9 contrib/auth/forms.py:36
+#: contrib/admin/views/decorators.py:9
+#: contrib/auth/forms.py:36
#: contrib/auth/forms.py:41
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Unesite ispravno korisničko ime i šifru. Napomena: oba polja prave razliku "
-"između velikih i malih slova."
+msgid "Please enter a correct username and password. Note that both fields are case-sensitive."
+msgstr "Unesite ispravno korisničko ime i šifru. Napomena: oba polja prave razliku između velikih i malih slova."
#: contrib/admin/views/decorators.py:23
#: contrib/admin/templates/admin/login.html:25
msgid "Log in"
-msgstr "Prijavi se"
+msgstr "Prijavite se"
#: 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 ""
-"Ponovo se prijavite pošto je vaša sesija istekla. Ne brinite, vaši podaci su "
-"sačuvani."
+msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved."
+msgstr "Ponovo se prijavite pošto je vaša sesija istekla. Ne brinite, vaši podaci su sačuvani."
#: 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 ""
-"Izgleda da vaš browser ne podržava \"cookie\". Uključite ih, ponovo učitajte "
-"stranu i pokušajte ponovo."
+msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again."
+msgstr "Vaš internet čitač nije prihvatio \"cookie\". Nakon aktiviranja odgovarajuće opcije ponovo učitajte stranu."
#: contrib/admin/views/decorators.py:82
msgid "Usernames cannot contain the '@' character."
@@ -482,7 +450,7 @@ msgstr "Korisnička imena ne mogu sadržati karakter '@'."
#: contrib/admin/views/decorators.py:84
#, python-format
msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "Vaša e-mail adresa nije koriničko ime. Probajte sa '%s'."
+msgstr "Vaše korisničko ime nije data e-mail adresa. Pokušajte sa '%s'."
#: contrib/admin/views/main.py:226
msgid "Site administration"
@@ -493,26 +461,29 @@ msgstr "Administracija sajta"
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr "Uspešno dodat %(name)s \"%(obj)s\"."
-#: contrib/admin/views/main.py:264 contrib/admin/views/main.py:348
+#: contrib/admin/views/main.py:264
+#: contrib/admin/views/main.py:348
msgid "You may edit it again below."
-msgstr "Ispod ga možete ponovo izmeniti."
+msgstr "Možete ga ponovo izmeniti."
-#: contrib/admin/views/main.py:272 contrib/admin/views/main.py:357
+#: contrib/admin/views/main.py:272
+#: contrib/admin/views/main.py:357
#, python-format
msgid "You may add another %s below."
-msgstr "Ispod možete dodati još jedan %s."
+msgstr "Možete dodati još jedan %s."
#: contrib/admin/views/main.py:290
#, python-format
msgid "Add %s"
-msgstr "Dodaj %s"
+msgstr "Dodajte %s"
#: contrib/admin/views/main.py:336
#, python-format
msgid "Added %s."
msgstr "Dodat %s"
-#: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338
+#: contrib/admin/views/main.py:336
+#: contrib/admin/views/main.py:338
#: contrib/admin/views/main.py:340
msgid "and"
msgstr "i"
@@ -525,11 +496,11 @@ msgstr "Izmenjen %s."
#: contrib/admin/views/main.py:340
#, python-format
msgid "Deleted %s."
-msgstr "Obrisan %s"
+msgstr "Obrisan %s."
#: contrib/admin/views/main.py:343
msgid "No fields changed."
-msgstr "Nijedno polje nije promenjeno."
+msgstr "Nijedno polje nije izmenjeno."
#: contrib/admin/views/main.py:346
#, python-format
@@ -538,9 +509,8 @@ msgstr "Uspešno izmenjen: %(name)s \"%(obj)s\"."
#: contrib/admin/views/main.py:354
#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" je uspešno dodat. Ispod ga možete ponovo menjati."
+msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
+msgstr "%(name)s \"%(obj)s\" je uspešno dodat. Možete ga ponovo izmeniti."
#: contrib/admin/views/main.py:392
#, python-format
@@ -574,16 +544,19 @@ msgstr "Istorija izmena: %s"
#: contrib/admin/views/main.py:565
#, python-format
msgid "Select %s"
-msgstr "Izaberi %s"
+msgstr "Izaberite %s"
#: contrib/admin/views/main.py:565
#, python-format
msgid "Select %s to change"
-msgstr "Izaberi %s za izmenu"
+msgstr "Izaberite %s za izmenu"
-#: contrib/admin/views/doc.py:277 contrib/admin/views/doc.py:286
-#: contrib/admin/views/doc.py:288 contrib/admin/views/doc.py:294
-#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:297
+#: contrib/admin/views/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 "Ceo broj"
@@ -591,7 +564,8 @@ msgstr "Ceo broj"
msgid "Boolean (Either True or False)"
msgstr "Logička vrednost (Tačno ili Netačno)"
-#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:296
+#: contrib/admin/views/doc.py:279
+#: contrib/admin/views/doc.py:296
#, python-format
msgid "String (up to %(maxlength)s)"
msgstr "Niz karaktera (maksimalno %(maxlength)s karaktera)"
@@ -612,9 +586,10 @@ msgstr "Datum (sa vremenom)"
msgid "E-mail address"
msgstr "E-mail adresa"
-#: contrib/admin/views/doc.py:284 contrib/admin/views/doc.py:287
+#: contrib/admin/views/doc.py:284
+#: contrib/admin/views/doc.py:287
msgid "File path"
-msgstr "Putanja do fajla"
+msgstr "Putanja do datoteke"
#: contrib/admin/views/doc.py:285
msgid "Decimal number"
@@ -626,7 +601,7 @@ msgstr "Logička vrednost (Tačno, Netačno ili prazno)"
#: contrib/admin/views/doc.py:292
msgid "Relation to parent model"
-msgstr "Relacija prema nadređenom objektu"
+msgstr "Relacija ka nadređenom objektu"
#: contrib/admin/views/doc.py:293
msgid "Phone number"
@@ -640,9 +615,8 @@ msgstr "Tekst"
msgid "Time"
msgstr "Vreme"
-# nesh: ovo se valjda ne prevodi
-# petar: ne prevodi se
-#: contrib/admin/views/doc.py:300 contrib/flatpages/models.py:7
+#: contrib/admin/views/doc.py:300
+#: contrib/flatpages/models.py:7
msgid "URL"
msgstr "URL"
@@ -683,7 +657,7 @@ msgstr "Dokumentacija"
#: contrib/admin/templates/admin_doc/index.html:4
#: contrib/admin/templates/admin_doc/model_index.html:5
msgid "Change password"
-msgstr "Izmeni lozinku"
+msgstr "Izmenite lozinku"
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/500.html:4
@@ -715,19 +689,15 @@ msgstr "Korisnik"
#: contrib/admin/templates/admin/object_history.html:20
msgid "Action"
-msgstr "Akcija"
+msgstr "Aktivnost"
#: 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 ""
-"Ovaj objekat nema istoriju promena. Najverovatnije nije dodat korišćenjem "
-"administracije sajta."
+msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
+msgstr "Ovaj objekat nema istoriju promena. Najverovatnije nije dodat korišćenjem administracije sajta."
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
@@ -750,12 +720,8 @@ msgid "Server Error <em>(500)</em>"
msgstr "Greška na serveru <em>(500)</em>"
#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Dogodila se greška koja je prijavljena administratorima i biće popravljena "
-"uskoro. Hvala Vam na strpljenju."
+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 "Dogodila se greška koja je prijavljena administratorima."
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
@@ -769,16 +735,16 @@ msgstr "Tražena strana ne postoji."
#: contrib/admin/templates/admin/index.html:17
#, python-format
msgid "Models available in the %(name)s application."
-msgstr ""
+msgstr "Dostupni modeli u aplikaciji %(name)s."
#: contrib/admin/templates/admin/index.html:28
#: contrib/admin/templates/admin/change_form.html:15
msgid "Add"
-msgstr "Dodaj"
+msgstr "Dodajte"
#: contrib/admin/templates/admin/index.html:34
msgid "Change"
-msgstr "Izmena"
+msgstr "Izmenite"
#: contrib/admin/templates/admin/index.html:44
msgid "You don't have permission to edit anything."
@@ -786,24 +752,24 @@ msgstr "Nemate prava da vršite izmene."
#: contrib/admin/templates/admin/index.html:52
msgid "Recent Actions"
-msgstr "Skorije akcije"
+msgstr "Poslednje aktivnosti"
#: contrib/admin/templates/admin/index.html:53
msgid "My Actions"
-msgstr "Moje akcije"
+msgstr "Moje aktivnosti"
#: contrib/admin/templates/admin/index.html:57
msgid "None available"
-msgstr "Nema dostupnih"
+msgstr "Bez aktivnosti"
#: contrib/admin/templates/admin/change_list.html:11
#, python-format
msgid "Add %(name)s"
-msgstr "Dodaj %(name)s"
+msgstr "Dodajte %(name)s"
#: contrib/admin/templates/admin/login.html:22
msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-msgstr "Da li ste <a href=\"/password_reset/\">zaboravili Vašu lozinku?</a>?"
+msgstr "Da li ste <a href=\"/password_reset/\">zaboravili vašu lozinku?</a>?"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
@@ -812,26 +778,17 @@ msgstr "Dobrodošli,"
#: contrib/admin/templates/admin/delete_confirmation.html:9
#: contrib/admin/templates/admin/submit_line.html:3
msgid "Delete"
-msgstr "Obriši"
+msgstr "Obrišite"
#: 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 ""
-"Brisanjem %(object_name)s '%(object)s' došlo bi do brisanja dodatnih "
-"podataka, ali nemate prava da brišete sledeće tipove podataka:"
+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 "Brisanjem %(object_name)s '%(object)s' došlo bi do brisanja pridruženih objekata, ali nemate prava da brišete sledeće objekte:"
#: 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 ""
-"Da li ste sigurni da želite da obrišete %(object_name)s \"%(object)s\"? Biće "
-"obrisani i sledeći pridruženi objekti:"
+msgid "Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of the following related items will be deleted:"
+msgstr "Da li ste sigurni da želite da obrišete %(object_name)s \"%(object)s\"? Takođe će biti obrisani sledeći pridruženi objekti:"
#: contrib/admin/templates/admin/delete_confirmation.html:26
msgid "Yes, I'm sure"
@@ -840,11 +797,11 @@ msgstr "Da, siguran sam"
#: contrib/admin/templates/admin/filter.html:2
#, python-format
msgid " By %(title)s "
-msgstr "Po %(title)s "
+msgstr " Po %(title)s "
#: contrib/admin/templates/admin/search_form.html:8
msgid "Go"
-msgstr "Uradi"
+msgstr "Nađi"
#: contrib/admin/templates/admin/change_form.html:21
msgid "View on site"
@@ -867,26 +824,26 @@ msgstr "Red:"
#: contrib/admin/templates/admin/submit_line.html:4
msgid "Save as new"
-msgstr "Snimi kao novi"
+msgstr "Snimite kao novi"
#: contrib/admin/templates/admin/submit_line.html:5
msgid "Save and add another"
-msgstr "Snimi i dodaj još jedan"
+msgstr "Snimite i dodaj još jedan"
#: contrib/admin/templates/admin/submit_line.html:6
msgid "Save and continue editing"
-msgstr "Snimi i nastavi sa izmenama"
+msgstr "Snimite i nastavite sa izmenama"
#: contrib/admin/templates/admin/submit_line.html:7
msgid "Save"
-msgstr "Snimi"
+msgstr "Snimite"
#: 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 "Izmena lozinke"
+msgstr "Izmenite lozinku"
#: contrib/admin/templates/registration/password_change_done.html:6
#: contrib/admin/templates/registration/password_change_done.html:10
@@ -905,12 +862,8 @@ msgid "Password reset"
msgstr "Resetovanje lozinke"
#: 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 ""
-"Zaboravili ste svoju lozinku? Unesite vašu e-mail adresu i dobićete novu "
-"lozinku na dati e-mail."
+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 "Zaboravili ste svoju lozinku? Unesite vašu e-mail adresu i dobićete novu lozinku na dati e-mail."
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "E-mail address:"
@@ -918,7 +871,7 @@ msgstr "E-mail adresa:"
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "Reset my password"
-msgstr "Resetuj moju lozinku"
+msgstr "Resetujte moju lozinku"
#: contrib/admin/templates/registration/logged_out.html:8
msgid "Thanks for spending some quality time with the Web site today."
@@ -926,7 +879,7 @@ msgstr "Hvala Vam na poseti."
#: contrib/admin/templates/registration/logged_out.html:10
msgid "Log in again"
-msgstr "Prijavi se ponovo"
+msgstr "Prijavite se ponovo"
#: contrib/admin/templates/registration/password_reset_done.html:6
#: contrib/admin/templates/registration/password_reset_done.html:10
@@ -934,20 +887,12 @@ msgid "Password reset successful"
msgstr "Vaša lozinka je uspešno resetovana"
#: 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 ""
-"Nova lozinka poslata vam je na zadatu e-mail adresu. E-mail bi trebao da "
-"stigne u narednih nekoliko minuta."
+msgid "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly."
+msgstr "Nova lozinka vam je poslata na zadatu e-mail adresu. E-mail bi trebao da stigne u narednih nekoliko minuta."
#: 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 ""
-"Unesite staru lozinku, nakon toga unesite novu lozinku dva puta, radi "
-"provere ispravnosti unosa."
+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 "Unesite staru lozinku, nakon toga unesite novu lozinku dva puta, radi provere ispravnosti unosa."
#: contrib/admin/templates/registration/password_change_form.html:17
msgid "Old password:"
@@ -963,11 +908,11 @@ msgstr "Potvrdite novu lozinku:"
#: contrib/admin/templates/registration/password_change_form.html:23
msgid "Change my password"
-msgstr "Izmeni moju lozinku"
+msgstr "Izmenite moju lozinku"
#: contrib/admin/templates/registration/password_reset_email.html:2
msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Primili ste ovaj e-mail jer ste tražili resetovanje lozinke"
+msgstr "Primili ste ovaj e-mail jer ste zatražili resetovanje lozinke"
#: contrib/admin/templates/registration/password_reset_email.html:3
#, python-format
@@ -1015,36 +960,23 @@ msgid ""
"your computer is \"internal\").</p>\n"
msgstr ""
"\n"
-"<p class=\"help\">Da bi ste instalirali \"bookmarklet\", odvučite link u "
-"vaše \"bookmark\"-e, ili kliknite desnim tasterom i dodajte ga. Sada možete "
-"da izaberete \"bookmark\" sa bilo koje strane na sajtu. Napomena: pristup "
-"nekima od strana mora biti sa kompjutera čija je IP adresa označena kao "
-"\"internal\" (kontaktirajte sistem administratora ako niste sigurni da li je "
-"vaš IP označen kao \"internal\").</p>\n"
+"<p class=\"help\">Da bi ste instalirali \"bookmarklet\", odvucite link u vaše \"bookmark\"-e, ili kliknite desnim tasterom i dodajte ga. Sada možete da izaberete \"bookmark\" sa bilo koje strane na sajtu. Napomena: pristup nekima od strana mora biti sa kompjutera čija je IP adresa označena kao \"internal\" (kontaktirajte sistem administratora ako niste sigurni da li je vaš IP označen kao \"internal\").</p>\n"
#: contrib/admin/templates/admin_doc/bookmarklets.html:19
msgid "Documentation for this page"
msgstr "Dokumentacija za ovu stranu"
#: 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 ""
-"Skače sa bilo koje strane na stranu sa dokumentacijom za \"view\" koji "
-"generiše tu stranu."
+msgid "Jumps you from any page to the documentation for the view that generates that page."
+msgstr "Skače sa bilo koje strane na stranu sa dokumentacijom za \"view\" koji generiše tu stranu."
#: contrib/admin/templates/admin_doc/bookmarklets.html:22
msgid "Show object ID"
-msgstr "Prikaži ID objekta"
+msgstr "Prikažite ID objekta"
#: contrib/admin/templates/admin_doc/bookmarklets.html:23
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Prikazuje \"content-type\" i jedinstveni ID strane koje predstavlja jedan "
-"objekt."
+msgid "Shows the content-type and unique ID for pages that represent a single object."
+msgstr "Prikazuje \"content-type\" i jedinstveni ID strane koje predstavlja jedan objekt."
#: contrib/admin/templates/admin_doc/bookmarklets.html:25
msgid "Edit this object (current window)"
@@ -1056,7 +988,7 @@ msgstr "Skače na admin stranu za strane koje predstavljaju objekt."
#: contrib/admin/templates/admin_doc/bookmarklets.html:28
msgid "Edit this object (new window)"
-msgstr "Izmeni objekt (novi prozor)"
+msgstr "Izmeni objekat (novi prozor)"
#: contrib/admin/templates/admin_doc/bookmarklets.html:29
msgid "As above, but opens the admin page in a new window."
@@ -1080,42 +1012,31 @@ msgstr "Izmenite:"
#: contrib/redirects/models.py:7
msgid "redirect from"
-msgstr "redirekcija od"
+msgstr "preusmeri od"
#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Ovde treba upisati apsolutnu putanju bez imena domena. Primer: '/events/"
-"search/'."
+msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'."
+msgstr "Unesite apsolutnu putanju bez imena domena. Primer: '/dogadjaji/pretraga/'."
#: contrib/redirects/models.py:9
msgid "redirect to"
-msgstr "redirekcija na"
+msgstr "preusmeri ka"
#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Ovo može biti apsolutna putanja (kao gore) ili puni URL koji počinje sa "
-"'http://'."
+msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'."
+msgstr "Može biti apsolutna putanja (kao gore) ili puni URL koji počinje sa 'http://'."
#: contrib/redirects/models.py:12
msgid "redirect"
-msgstr "redirekcija"
+msgstr "Preusmeravanje"
#: contrib/redirects/models.py:13
msgid "redirects"
-msgstr "redirekcije"
+msgstr "Preusmeravanja"
#: contrib/flatpages/models.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Primer: '/about/contact/'. Proverite da li ste uneli početnu i kranju kosu "
-"crtu."
+msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
+msgstr "Primer: '/o-nama/kontakt/'. Proverite da li ste uneli '/' na početku i na kraju."
#: contrib/flatpages/models.py:9
msgid "title"
@@ -1131,15 +1052,11 @@ msgstr "omogućite komentare"
#: contrib/flatpages/models.py:12
msgid "template name"
-msgstr "ime templejta"
+msgstr "naziv templejta"
#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page'. If this isn't provided, the system will "
-"use 'flatpages/default'."
-msgstr ""
-"Primer: 'flatpages/contact-page'. Ako nije dato sistem će koristiti "
-"flatpages/default'."
+msgid "Example: 'flatpages/contact_page'. If this isn't provided, the system will use 'flatpages/default'."
+msgstr "Primer: 'flatpages/kontakt-stranica'. Ako ne zadate sistem će koristiti 'flatpages/default'."
#: contrib/flatpages/models.py:14
msgid "registration required"
@@ -1147,9 +1064,7 @@ msgstr "samo za registrovane korisnike"
#: contrib/flatpages/models.py:14
msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Ako izaberete ovu opciju samo prijavljeni korisnici će imati pristup datoj "
-"strani."
+msgstr "Ako izaberete ovu opciju samo prijavljeni korisnici će imati pristup datoj strani."
#: contrib/flatpages/models.py:18
msgid "flat page"
@@ -1159,33 +1074,32 @@ msgstr "statična strana"
msgid "flat pages"
msgstr "statične strane"
-#: contrib/auth/models.py:13 contrib/auth/models.py:26
+#: contrib/auth/models.py:13
+#: contrib/auth/models.py:26
msgid "name"
msgstr "ime"
#: contrib/auth/models.py:15
msgid "codename"
-msgstr "kodno ime"
+msgstr "šifra dozvole"
#: contrib/auth/models.py:17
-#, fuzzy
msgid "permission"
-msgstr "Pravo"
+msgstr "dozvola"
-#: contrib/auth/models.py:18 contrib/auth/models.py:27
-#, fuzzy
+#: contrib/auth/models.py:18
+#: contrib/auth/models.py:27
msgid "permissions"
-msgstr "Prava"
+msgstr "dozvole"
#: contrib/auth/models.py:29
-#, fuzzy
msgid "group"
-msgstr "Grupa"
+msgstr "grupa"
-#: contrib/auth/models.py:30 contrib/auth/models.py:65
-#, fuzzy
+#: contrib/auth/models.py:30
+#: contrib/auth/models.py:65
msgid "groups"
-msgstr "Grupe"
+msgstr "grupe"
#: contrib/auth/models.py:55
msgid "username"
@@ -1213,11 +1127,11 @@ msgstr "Koristite '[algo]$[salt]$[hexdigest]'"
#: contrib/auth/models.py:60
msgid "staff status"
-msgstr "dozvoli pristup administraciji sajta"
+msgstr "dozvoljen pristup administraciji sajta"
#: contrib/auth/models.py:60
msgid "Designates whether the user can log into this admin site."
-msgstr "Određuje da li će korisnik imati pristup administratorskom delu sajta."
+msgstr "Da li korisnik ima pristup administratorskom delu sajta."
#: contrib/auth/models.py:61
msgid "active"
@@ -1236,26 +1150,20 @@ msgid "date joined"
msgstr "datum otvaranja naloga"
#: 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 ""
-"Uz ručno dodata prava, korisnik će dobiti sva prava iz grupa kojima pripada."
+msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in."
+msgstr "Uz ručno dodata prava, korisnik će dobiti sva prava iz grupa kojima pripada."
#: contrib/auth/models.py:67
-#, fuzzy
msgid "user permissions"
-msgstr "Prava"
+msgstr "korisničke dozvole"
#: contrib/auth/models.py:70
-#, fuzzy
msgid "user"
-msgstr "Korisnik"
+msgstr "korisnik"
#: contrib/auth/models.py:71
-#, fuzzy
msgid "users"
-msgstr "Korisnici"
+msgstr "korisnici"
#: contrib/auth/models.py:76
msgid "Personal info"
@@ -1263,7 +1171,7 @@ msgstr "Lične informacije"
#: contrib/auth/models.py:77
msgid "Permissions"
-msgstr "Prava"
+msgstr "Dozvole"
#: contrib/auth/models.py:78
msgid "Important dates"
@@ -1274,22 +1182,16 @@ msgid "Groups"
msgstr "Grupe"
#: contrib/auth/models.py:219
-#, fuzzy
msgid "message"
-msgstr "Poruka"
+msgstr "poruka"
#: contrib/auth/forms.py:30
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"Vaš web brovser nema omogućenje \"cookie\". \"cookie\" podrška je potrebna "
-"da bi ste mogli da se prijavite."
+msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in."
+msgstr "Vaš internet čitač nije prihvatio \"cookie\". \"Cookie\" podrška je potrebna da bi ste mogli da se prijavite."
#: contrib/contenttypes/models.py:25
-#, fuzzy
msgid "python model class name"
-msgstr "ime python modula"
+msgstr "naziv python modula"
#: contrib/contenttypes/models.py:28
msgid "content type"
@@ -1383,23 +1285,28 @@ msgstr "Januar"
msgid "February"
msgstr "Februar"
-#: utils/dates.py:14 utils/dates.py:27
+#: utils/dates.py:14
+#: utils/dates.py:27
msgid "March"
msgstr "Mart"
-#: 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 "Maj"
-#: utils/dates.py:14 utils/dates.py:27
+#: utils/dates.py:14
+#: utils/dates.py:27
msgid "June"
msgstr "Jun"
-#: utils/dates.py:15 utils/dates.py:27
+#: utils/dates.py:15
+#: utils/dates.py:27
msgid "July"
msgstr "Jul"
@@ -1424,54 +1331,52 @@ msgid "December"
msgstr "Decembar"
#: utils/dates.py:19
-#, fuzzy
msgid "jan"
-msgstr "i"
+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
-#, fuzzy
msgid "may"
-msgstr "dan"
+msgstr "maj"
#: utils/dates.py:19
msgid "jun"
-msgstr ""
+msgstr "jun"
#: utils/dates.py:20
msgid "jul"
-msgstr ""
+msgstr "jul"
#: utils/dates.py:20
msgid "aug"
-msgstr ""
+msgstr "avg"
#: utils/dates.py:20
msgid "sep"
-msgstr ""
+msgstr "sep"
#: utils/dates.py:20
msgid "oct"
-msgstr ""
+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."
@@ -1518,9 +1423,9 @@ msgstr[2] "meseci"
#: utils/timesince.py:14
msgid "week"
msgid_plural "weeks"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "nedelja"
+msgstr[1] "nedelje"
+msgstr[2] "nedelja"
#: utils/timesince.py:15
msgid "day"
@@ -1565,7 +1470,7 @@ msgstr "Nemački"
#: conf/global_settings.py:42
msgid "Greek"
-msgstr ""
+msgstr "Grčki"
#: conf/global_settings.py:43
msgid "English"
@@ -1585,11 +1490,11 @@ msgstr "Galski"
#: conf/global_settings.py:47
msgid "Hungarian"
-msgstr ""
+msgstr "Mađarski"
#: conf/global_settings.py:48
msgid "Hebrew"
-msgstr ""
+msgstr "Hebrejski"
#: conf/global_settings.py:49
msgid "Icelandic"
@@ -1628,9 +1533,8 @@ msgid "Slovak"
msgstr "Slovački"
#: conf/global_settings.py:58
-#, fuzzy
msgid "Slovenian"
-msgstr "Slovački"
+msgstr "Slovenački"
#: conf/global_settings.py:59
msgid "Serbian"
@@ -1641,9 +1545,8 @@ msgid "Swedish"
msgstr "Švedski"
#: conf/global_settings.py:61
-#, fuzzy
msgid "Ukrainian"
-msgstr "Brazilski"
+msgstr "Ukrajinski"
#: conf/global_settings.py:62
msgid "Simplified Chinese"
@@ -1659,24 +1562,20 @@ msgid "This value must contain only letters, numbers and underscores."
msgstr "Ovo polje može sadržati samo slova, brojeve i donju crtu (_)."
#: core/validators.py:64
-#, fuzzy
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"Ovo polje može sadržati samo slova, brojeve, donju crtu (_) i kose crte."
+msgid "This value must contain only letters, numbers, underscores, dashes or slashes."
+msgstr "Ovo polje može sadržati samo slova, brojeve, donju crtu (_), crtu (-) i kose crte."
#: core/validators.py:72
msgid "Uppercase letters are not allowed here."
-msgstr "Velika slova ovde nisu dozvoljena."
+msgstr "Velika slova nisu dozvoljena."
#: core/validators.py:76
msgid "Lowercase letters are not allowed here."
-msgstr "Mala slova ovde nisu dozvoljena."
+msgstr "Mala slova nisu dozvoljena."
#: core/validators.py:83
msgid "Enter only digits separated by commas."
-msgstr "Unesite samo brojeve razdvojene zarezima."
+msgstr "Unesite brojeve razdvojene zarezima."
#: core/validators.py:95
msgid "Enter valid e-mail addresses separated by commas."
@@ -1688,7 +1587,7 @@ msgstr "Unesite ispravnu IP adresu."
#: core/validators.py:103
msgid "Empty values are not allowed here."
-msgstr "Prazne vrednosti ovde nisu dozvoljene."
+msgstr "Prazne vrednosti nisu dozvoljene."
#: core/validators.py:107
msgid "Non-numeric characters aren't allowed here."
@@ -1714,7 +1613,8 @@ msgstr "Unesite ispravan datum u YYYY-MM-DD formatu."
msgid "Enter a valid time in HH:MM format."
msgstr "Unesite ispravno vreme u HH:MM formatu."
-#: core/validators.py:132 db/models/fields/__init__.py:468
+#: core/validators.py:132
+#: db/models/fields/__init__.py:468
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr "Unesite ispravan datum i vreme u YYYY-MM-DD HH:MM formatu."
@@ -1723,12 +1623,8 @@ msgid "Enter a valid e-mail address."
msgstr "Unesite ispravnu 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."
-msgstr ""
-"Pošaljite ispravnu sliku. Fajl koji ste poslali ili nije slika ili je sam "
-"fajl oštećen."
+msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image."
+msgstr "Pošaljite ispravnu sliku. Fajl koji ste poslali ili nije slika ili je sam fajl oštećen."
#: core/validators.py:155
#, python-format
@@ -1739,8 +1635,7 @@ msgstr "URL %s ne pokazuje na ispravnu sliku"
#: core/validators.py:159
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-"Telefonski brojevi moraju biti u formatu XXX-XXX-XXXX. \"%s\" je neispravan."
+msgstr "Telefonski brojevi moraju biti u formatu XXX-XXX-XXXX. \"%s\" je neispravan."
#: core/validators.py:167
#, python-format
@@ -1770,7 +1665,8 @@ msgstr "Neispravan XML: %s"
msgid "Invalid URL: %s"
msgstr "Neispravan URL: %s"
-#: core/validators.py:206 core/validators.py:208
+#: core/validators.py:206
+#: core/validators.py:208
#, python-format
msgid "The URL %s is a broken link."
msgstr "URL %s je neispravan link."
@@ -1797,7 +1693,8 @@ msgstr "Ovo polje mora biti jednako sa poljem '%s'."
msgid "Please enter something for at least one field."
msgstr "Morate popuniti barem jedno polje."
-#: core/validators.py:264 core/validators.py:275
+#: core/validators.py:264
+#: core/validators.py:275
msgid "Please enter both fields or leave them both empty."
msgstr "Popunite oba polja ili oba ostavite prazna."
@@ -1827,8 +1724,7 @@ msgstr "Unesite ispravan decimalni broj."
#: 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] "Unesite ispravan decimalni broj sa %s cifrom."
msgstr[1] "Unesite ispravan decimalni broj sa %s cifre."
msgstr[2] "Unesite ispravan decimalni broj sa %s cifara."
@@ -1836,8 +1732,7 @@ msgstr[2] "Unesite ispravan decimalni broj sa %s cifara."
#: 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] "Unesite decimalni broj sa najviše %s decimalnim mestom."
msgstr[1] "Unesite decimalni broj sa najviše %s decimalna mesta."
msgstr[2] "Unesite decimalni broj sa najviše %s decimalnih mesta."
@@ -1867,63 +1762,38 @@ msgstr "Ništa nije moglo da se skine sa URL-a %s."
#: core/validators.py:429
#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-"Sa URL-a %(url)s se vratio pogrešan Content-Type header '%(contenttype)s'."
+msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
+msgstr "Sa URL-a %(url)s se vratio pogrešan 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 ""
-"Zatvorite nezatvoren tag \"%(tag)s\" iz reda %(line)s. (Red počinje sa \"%"
-"(start)s\".)"
+msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)"
+msgstr "Zatvorite nezatvoren tag \"%(tag)s\" iz reda %(line)s. (Red počinje sa \"%(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 ""
-"Tekst koji počinje u redu %(line)s nije dozvoljen u ovom kontekstu. (Red "
-"počinje sa \"%(start)s\".)"
+msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)"
+msgstr "Tekst koji počinje u redu %(line)s nije dozvoljen u ovom kontekstu. (Red počinje sa \"%(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 ""
-"Atribut \"%(attr)s\" u red %(line)s je neispravan. (Red počinje sa \"%(start)"
-"s\".)"
+msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)"
+msgstr "Atribut \"%(attr)s\" u red %(line)s je neispravan. (Red počinje sa \"%(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 \"<%(tag)s>\" u redu %(line)s je neispravan. (Red počinje \"%(start)s\".)"
+msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)"
+msgstr "Tag \"<%(tag)s>\" u redu %(line)s je neispravan. (Red počinje \"%(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 ""
-"Tag-u u redu %(line)s nedostaje jedan ili više atributa. (Red počinje sa \"%"
-"(start)s\".)"
+msgid "A tag on line %(line)s is missing one or more required attributes. (Line starts with \"%(start)s\".)"
+msgstr "Tag-u u redu %(line)s nedostaje jedan ili više atributa. (Red počinje sa \"%(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 ""
-"Atribut \"%(attr)s\" u redu %(line)s ima neispravnu vrednost. (Red počinje "
-"sa \"%(start)s\".)"
+msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)"
+msgstr "Atribut \"%(attr)s\" u redu %(line)s ima neispravnu vrednost. (Red počinje sa \"%(start)s\".)"
#: db/models/manipulators.py:302
#, python-format
@@ -1935,26 +1805,25 @@ msgstr "%(object)s sa ovim tipom %(type)s već postoji za polje %(field)s."
msgid "%(optname)s with this %(fieldname)s already exists."
msgstr "%(optname)s sa ovim %(fieldname)s već postoji."
-#: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265
-#: db/models/fields/__init__.py:542 db/models/fields/__init__.py:553
+#: db/models/fields/__init__.py: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 "Obavezno polje."
#: db/models/fields/__init__.py:337
-#, fuzzy
msgid "This value must be an integer."
-msgstr "Vrednost mora biti stepena %s."
+msgstr "Vrednost mora biti celi broj."
#: db/models/fields/__init__.py:369
-#, fuzzy
msgid "This value must be either True or False."
-msgstr "Vrednost mora biti stepena %s."
+msgstr "Vrednost mora biti True ili False."
#: db/models/fields/__init__.py:385
-#, fuzzy
msgid "This field cannot be null."
-msgstr "Neispravno polje."
+msgstr "Polje ne može sadržati praznu vrednost."
#: db/models/fields/__init__.py:562
msgid "Enter a valid filename."
@@ -1966,23 +1835,17 @@ msgid "Please enter a valid %s."
msgstr "Unesite ispravan %s."
#: db/models/fields/related.py:579
-#, fuzzy
msgid "Separate multiple IDs with commas."
-msgstr " Odvojite višestruke ID-ove zarezima."
+msgstr "Odvojite višestruke ID-ove zarezima."
#: db/models/fields/related.py:581
-#, fuzzy
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-" Koristite \"Ctrl\" (PC) ili \"Jabuku\" (Mek) da bi ste selektovali više "
-"stavki."
+msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgstr "Koristite \"Ctrl\" (PC) ili \"Jabuku\" (Mek) da bi ste selektovali više stavki."
#: 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] "Unesite validne %(self)s ID-ove. Vrednost %(value)r je neispravna."
msgstr[1] "Unesite validne %(self)s ID-ove. Vrednost %(value)r je neispravna."
msgstr[2] "Unesite validne %(self)s ID-ove. Vrednost %(value)r je neispravna."
@@ -1999,7 +1862,9 @@ msgstr[2] "Tekst mora imati manje od %s slova."
msgid "Line breaks are not allowed here."
msgstr "Novi redovi ovde nisu dozvoljeni."
-#: forms/__init__.py:480 forms/__init__.py:551 forms/__init__.py:589
+#: 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 "Izaberite validnu opciju: '%(data)s' nije u %(choices)s."
@@ -2026,25 +1891,18 @@ msgstr "da,ne,možda"
#~ msgid "Comment"
#~ msgstr "Komentar"
-
#~ msgid "Comments"
#~ msgstr "Komentari"
-
#~ msgid "String (up to 50)"
#~ msgstr "Niz karaktera (maksimalno 50 karaktera)"
-
#~ msgid "label"
#~ msgstr "labela"
-
#~ msgid "package"
#~ msgstr "paket"
-
#~ msgid "packages"
#~ msgstr "paketi"
-
#~ msgid "Error in Template"
#~ msgstr "Greška u templejtu"
-
#~ msgid ""
#~ "\n"
#~ "In template %(name)s, error at line %(line)s:\n"
@@ -2055,3 +1913,4 @@ msgstr "da,ne,možda"
#, fuzzy
#~ msgid "count"
#~ msgstr "sadržaj"
+
diff --git a/django/conf/locale/sr/LC_MESSAGES/djangojs.mo b/django/conf/locale/sr/LC_MESSAGES/djangojs.mo
index 4ae94424df..d4036a893e 100644
--- a/django/conf/locale/sr/LC_MESSAGES/djangojs.mo
+++ b/django/conf/locale/sr/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/django/conf/locale/sr/LC_MESSAGES/djangojs.po b/django/conf/locale/sr/LC_MESSAGES/djangojs.po
index ce23be3ee4..a70d878ea4 100644
--- a/django/conf/locale/sr/LC_MESSAGES/djangojs.po
+++ b/django/conf/locale/sr/LC_MESSAGES/djangojs.po
@@ -8,13 +8,12 @@ msgstr ""
"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-12-09 11:51+0100\n"
-"PO-Revision-Date: 2006-01-15 11:24+0100\n"
-"Last-Translator: Nebojša Đorđević <nesh@studioquattro.co.yu>\n"
+"PO-Revision-Date: 2007-02-20 18:51+0100\n"
+"Last-Translator: Petar Marić <petar.maric@gmail.com>\n"
"Language-Team: Nesh <nesh@studioquatro.co.yu> & Petar <petar.maric@gmail.com> <sr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: Serbian\n"
"X-Poedit-Country: YUGOSLAVIA\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
@@ -25,15 +24,15 @@ msgstr "Dostupno %s"
#: contrib/admin/media/js/SelectFilter2.js:41
msgid "Choose all"
-msgstr "Izaberi sve"
+msgstr "Izaberite sve"
#: contrib/admin/media/js/SelectFilter2.js:46
msgid "Add"
-msgstr "Dodaj"
+msgstr "Dodajte"
#: contrib/admin/media/js/SelectFilter2.js:48
msgid "Remove"
-msgstr "Izbaci"
+msgstr "Izbacite"
#: contrib/admin/media/js/SelectFilter2.js:53
#, perl-format
@@ -72,7 +71,7 @@ msgstr "Sat"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77
msgid "Choose a time"
-msgstr "Izaberi vreme"
+msgstr "Izaberite vreme"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
msgid "Midnight"
diff --git a/django/conf/locale/sv/LC_MESSAGES/django.mo b/django/conf/locale/sv/LC_MESSAGES/django.mo
index 90035f7c87..cd91c18cb7 100644
--- a/django/conf/locale/sv/LC_MESSAGES/django.mo
+++ b/django/conf/locale/sv/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/sv/LC_MESSAGES/django.po b/django/conf/locale/sv/LC_MESSAGES/django.po
index 8fc67d4047..befde10e77 100644
--- a/django/conf/locale/sv/LC_MESSAGES/django.po
+++ b/django/conf/locale/sv/LC_MESSAGES/django.po
@@ -1,26 +1,886 @@
# Swedish translation of Django
# Copyright (C) 2005
# This file is distributed under the same license as the Django package.
-# Robin Sonefors <ozamosi@blinkenlights.se>, 2005.
#
+#
+# Robin Sonefors <ozamosi@blinkenlights.se>, 2005.
+# Ludvig Ericson <ludvig.ericson@gmail.com>, 2007.
+# Mikko Hellsing <mikko@sorl.net>, 2007.
msgid ""
msgstr ""
-"Project-Id-Version: Django\n"
+"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 10:13+0200\n"
-"PO-Revision-Date: 2005-12-04 16:20+0100\n"
-"Last-Translator: Robin Sonefors <ozamosi@blinkenlights.se>\n"
-"Language-Team: Django translators <djangoi18n@googlegroups.com>\n"
+"POT-Creation-Date: 2007-03-06 00:17+0100\n"
+"PO-Revision-Date: 2007-03-06 10:30+0100\n"
+"Last-Translator: Mikko Hellsing <mikko@sorl.net>\n"
+"Language-Team: Django I18N <Django-I18N@googlegroups.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-Language: Swedish\n"
"X-Poedit-Country: SWEDEN\n"
+#: oldforms/__init__.py:352 db/models/fields/__init__.py:116
+#: db/models/fields/__init__.py:273 db/models/fields/__init__.py:609
+#: db/models/fields/__init__.py:620 newforms/models.py:177
+#: newforms/fields.py:78 newforms/fields.py:374 newforms/fields.py:450
+#: newforms/fields.py:461
+msgid "This field is required."
+msgstr "Detta fältet är obligatoriskt."
+
+#: 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] "Se till att din text är kortare än %s tecken."
+msgstr[1] "Se till att din text är kortare än %s tecken."
+
+#: oldforms/__init__.py:392
+msgid "Line breaks are not allowed here."
+msgstr "Radbrytningar är inte tillåtna här."
+
+#: 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 "Välj ett giltigt alternativ. '%(data)s' finns inte bland %(choices)s."
+
+#: oldforms/__init__.py:572 newforms/widgets.py:170
+#: contrib/admin/filterspecs.py:150
+msgid "Unknown"
+msgstr "Okänt"
+
+#: oldforms/__init__.py:572 newforms/widgets.py:170
+#: contrib/admin/filterspecs.py:143
+msgid "Yes"
+msgstr "Ja"
+
+#: oldforms/__init__.py:572 newforms/widgets.py:170
+#: contrib/admin/filterspecs.py:143
+msgid "No"
+msgstr "Nej"
+
+#: oldforms/__init__.py:667 core/validators.py:173 core/validators.py:444
+msgid "No file was submitted. Check the encoding type on the form."
+msgstr "Ingen fil skickad. Kontrollera enkodningen i form taggen."
+
+#: oldforms/__init__.py:669
+msgid "The submitted file is empty."
+msgstr "Den insända filen är tom."
+
+#: oldforms/__init__.py:725
+msgid "Enter a whole number between -32,768 and 32,767."
+msgstr "Fyll i ett heltal mellan -32768 och 32767."
+
+#: oldforms/__init__.py:735
+msgid "Enter a positive number."
+msgstr "Fyll i ett positivt heltal."
+
+#: oldforms/__init__.py:745
+msgid "Enter a whole number between 0 and 32,767."
+msgstr "Fyll i ett heltal mellan 0 och 32767."
+
+#: db/models/manipulators.py:307
+#, python-format
+msgid "%(object)s with this %(type)s already exists for the given %(field)s."
+msgstr "%(object)s med typen %(type)s finns redan för %(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 "och"
+
+#: db/models/fields/__init__.py:42
+#, python-format
+msgid "%(optname)s with this %(fieldname)s already exists."
+msgstr "%(optname)s med det här %(fieldname)s finns redan."
+
+#: db/models/fields/__init__.py:366
+msgid "This value must be an integer."
+msgstr "Det här värdet måste vara ett heltal."
+
+#: db/models/fields/__init__.py:401
+msgid "This value must be either True or False."
+msgstr "Det här värdet måste vara True eller False"
+
+#: db/models/fields/__init__.py:422
+msgid "This field cannot be null."
+msgstr "Det här fältet får inte vara null."
+
+#: db/models/fields/__init__.py:456 core/validators.py:147
+msgid "Enter a valid date in YYYY-MM-DD format."
+msgstr "Fyll i ett giltigt datum i formatet ÅÅÅÅ-MM-DD."
+
+#: db/models/fields/__init__.py:525 core/validators.py:156
+msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
+msgstr "Fyll i en giltig tidpunkt i formatet ÅÅÅÅ-MM-DD HH:MM"
+
+#: db/models/fields/__init__.py:629
+msgid "Enter a valid filename."
+msgstr "Fyll i ett giltigt filnamn."
+
+#: db/models/fields/related.py:53
+#, python-format
+msgid "Please enter a valid %s."
+msgstr "Var god fyll i giltigt %s."
+
+#: db/models/fields/related.py:642
+msgid "Separate multiple IDs with commas."
+msgstr "Separera flera ID:n med kommatecken."
+
+#: db/models/fields/related.py:644
+msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgstr "Håll ner \"Control\", eller \"Command\" på en Mac, för att välja mer än en."
+
+#: 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] "Var god och fyll giltiga %(self)s ID-nummer. Värdet %(value)r är ogiltigt."
+msgstr[1] "Var god och fyll giltiga %(self)s ID-nummer. Värdena %(value)r är ogiltiga."
+
+#: conf/global_settings.py:39
+msgid "Arabic"
+msgstr "Arabiska"
+
+#: conf/global_settings.py:40
+msgid "Bengali"
+msgstr "Bengaliska"
+
+#: conf/global_settings.py:41
+msgid "Catalan"
+msgstr "Katalanska"
+
+#: conf/global_settings.py:42
+msgid "Czech"
+msgstr "Tjeckiska"
+
+#: conf/global_settings.py:43
+msgid "Welsh"
+msgstr "Walesiska"
+
+#: conf/global_settings.py:44
+msgid "Danish"
+msgstr "Danska"
+
+#: conf/global_settings.py:45
+msgid "German"
+msgstr "Tyska"
+
+#: conf/global_settings.py:46
+msgid "Greek"
+msgstr "Grekiska"
+
+#: conf/global_settings.py:47
+msgid "English"
+msgstr "Engelska"
+
+#: conf/global_settings.py:48
+msgid "Spanish"
+msgstr "Spanska"
+
+#: conf/global_settings.py:49
+msgid "Argentinean Spanish"
+msgstr "Argentisk Spanska"
+
+#: conf/global_settings.py:50
+msgid "Finnish"
+msgstr "Finska"
+
+#: conf/global_settings.py:51
+msgid "French"
+msgstr "Franska"
+
+#: conf/global_settings.py:52
+msgid "Galician"
+msgstr "Galisiska"
+
+#: conf/global_settings.py:53
+msgid "Hungarian"
+msgstr "Ungerska"
+
+#: conf/global_settings.py:54
+msgid "Hebrew"
+msgstr "Hebreiska"
+
+#: conf/global_settings.py:55
+msgid "Icelandic"
+msgstr "Isländska"
+
+#: conf/global_settings.py:56
+msgid "Italian"
+msgstr "Italienska"
+
+#: conf/global_settings.py:57
+msgid "Japanese"
+msgstr "Japanska"
+
+#: conf/global_settings.py:58
+msgid "Kannada"
+msgstr "Kannada"
+
+#: conf/global_settings.py:59
+msgid "Latvian"
+msgstr "Lettiska"
+
+#: conf/global_settings.py:60
+msgid "Macedonian"
+msgstr "Makedonska"
+
+#: conf/global_settings.py:61
+msgid "Dutch"
+msgstr "Holländska"
+
+#: conf/global_settings.py:62
+msgid "Norwegian"
+msgstr "Norska"
+
+#: conf/global_settings.py:63
+msgid "Polish"
+msgstr "Polska"
+
+#: conf/global_settings.py:64
+msgid "Brazilian"
+msgstr "Brasilianska"
+
+#: conf/global_settings.py:65
+msgid "Romanian"
+msgstr "Rumänska"
+
+#: conf/global_settings.py:66
+msgid "Russian"
+msgstr "Ryska"
+
+#: conf/global_settings.py:67
+msgid "Slovak"
+msgstr "Slovakiska"
+
+#: conf/global_settings.py:68
+msgid "Slovenian"
+msgstr "Slovenska"
+
+#: conf/global_settings.py:69
+msgid "Serbian"
+msgstr "Serbiska"
+
+#: conf/global_settings.py:70
+msgid "Swedish"
+msgstr "Svenska"
+
+#: conf/global_settings.py:71
+msgid "Tamil"
+msgstr "Tamil"
+
+#: conf/global_settings.py:72
+msgid "Turkish"
+msgstr "Turkiska"
+
+#: conf/global_settings.py:73
+msgid "Ukrainian"
+msgstr "Ukrainska"
+
+#: conf/global_settings.py:74
+msgid "Simplified Chinese"
+msgstr "Förenklad Kinesiska"
+
+#: conf/global_settings.py:75
+msgid "Traditional Chinese"
+msgstr "Traditionell Kinesiska"
+
+#: core/validators.py:64
+msgid "This value must contain only letters, numbers and underscores."
+msgstr "Det här värdet får bara innehålla bokstäver, tal och understräck."
+
+#: core/validators.py:68
+msgid ""
+"This value must contain only letters, numbers, underscores, dashes or "
+"slashes."
+msgstr ""
+"Det här värdet får bara innehålla bokstäver, siffror, understräck, sträck "
+"och snedsträck"
+
+#: core/validators.py:72
+msgid "This value must contain only letters, numbers, underscores or hyphens."
+msgstr "Det här värdet får bara innehålla bokstäver, siffror, understräck eller sträck ."
+
+#: core/validators.py:76
+msgid "Uppercase letters are not allowed here."
+msgstr "Stora bokstäver är inte tillåtna här."
+
+#: core/validators.py:80
+msgid "Lowercase letters are not allowed here."
+msgstr "Små bokstäver är inte tillåtna här."
+
+#: core/validators.py:87
+msgid "Enter only digits separated by commas."
+msgstr "Fyll enbart i siffror avskilda med kommatecken."
+
+#: core/validators.py:99
+msgid "Enter valid e-mail addresses separated by commas."
+msgstr "Fyll i giltiga e-mailadresser avskilda med kommatecken."
+
+#: core/validators.py:103
+msgid "Please enter a valid IP address."
+msgstr "Var god fyll i en giltigt IP-adress."
+
+#: core/validators.py:107
+msgid "Empty values are not allowed here."
+msgstr "Tomma värden är inte tillåtna här."
+
+#: core/validators.py:111
+msgid "Non-numeric characters aren't allowed here."
+msgstr "Icke-numeriska tecken är inte tillåtna här."
+
+#: core/validators.py:115
+msgid "This value can't be comprised solely of digits."
+msgstr "Det här värdet kan inte enbart bestå av siffror."
+
+#: core/validators.py:120 newforms/fields.py:126
+msgid "Enter a whole number."
+msgstr "Fyll i ett heltal."
+
+#: core/validators.py:124
+msgid "Only alphabetical characters are allowed here."
+msgstr "Endast bokstäver är tillåtna här."
+
+#: core/validators.py:139
+msgid "Year must be 1900 or later."
+msgstr "Årtal måste vara 1900 eller senare."
+
+#: core/validators.py:143
+#, python-format
+msgid "Invalid date: %s."
+msgstr "Felaktigt datum: %s"
+
+#: core/validators.py:152
+msgid "Enter a valid time in HH:MM format."
+msgstr "Fyll i en giltig tid i formatet HH:MM"
+
+#: core/validators.py:161 newforms/fields.py:269
+msgid "Enter a valid e-mail address."
+msgstr "Fyll i en giltig e-mailadress."
+
+#: core/validators.py:177
+msgid ""
+"Upload a valid image. The file you uploaded was either not an image or a "
+"corrupted image."
+msgstr ""
+"Ladda upp en giltig bild. Filen du laddade upp var antingen ingen bild eller en "
+"korrupt bild."
+
+#: core/validators.py:184
+#, python-format
+msgid "The URL %s does not point to a valid image."
+msgstr "URL:en %s pekar inte på en giltig bild."
+
+#: core/validators.py:188
+#, python-format
+msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
+msgstr ""
+"Telefonnummer måste vara i det amerikanska formatet XXX-XXX-XXXX. \"%s\" är "
+"ogiltigt."
+
+#: core/validators.py:196
+#, python-format
+msgid "The URL %s does not point to a valid QuickTime video."
+msgstr "URL:en %s pekar inte på en giltig QuickTime-video."
+
+#: core/validators.py:200
+msgid "A valid URL is required."
+msgstr "En giltig URL krävs."
+
+#: core/validators.py:214
+#, python-format
+msgid ""
+"Valid HTML is required. Specific errors are:\n"
+"%s"
+msgstr ""
+"Giltig HTML krävs. Specifika fel är:\n"
+"%s"
+
+#: core/validators.py:221
+#, python-format
+msgid "Badly formed XML: %s"
+msgstr "Missformad XML: %s"
+
+#: core/validators.py:238
+#, python-format
+msgid "Invalid URL: %s"
+msgstr "Felaktig URL: %s"
+
+#: core/validators.py:243 core/validators.py:245
+#, python-format
+msgid "The URL %s is a broken link."
+msgstr "URL:en %s är en trasig länk."
+
+#: core/validators.py:251
+msgid "Enter a valid U.S. state abbreviation."
+msgstr "Fyll i en giltig förkortning för en amerikansk delstat"
+
+#: 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] "Akta din tunga! Ordet %s är inte tillåtet här."
+msgstr[1] "Akta din tunga! Orden %s är inte tillåtna här."
+
+#: core/validators.py:272
+#, python-format
+msgid "This field must match the '%s' field."
+msgstr "Det här fältet måste matcha fältet '%s'."
+
+#: core/validators.py:291
+msgid "Please enter something for at least one field."
+msgstr "Fyll i något i minst ett fält."
+
+#: core/validators.py:300 core/validators.py:311
+msgid "Please enter both fields or leave them both empty."
+msgstr "Fyll antingen i båda fälten, eller lämna båda tomma"
+
+#: core/validators.py:319
+#, python-format
+msgid "This field must be given if %(field)s is %(value)s"
+msgstr "Det är fältet måste anges om %(field)s är %(value)s"
+
+#: core/validators.py:332
+#, python-format
+msgid "This field must be given if %(field)s is not %(value)s"
+msgstr "Det här fältet måste anges om %(field)s inte är %(value)s"
+
+#: core/validators.py:351
+msgid "Duplicate values are not allowed."
+msgstr "Upprepade värden är inte tillåtna."
+
+#: core/validators.py:366
+#, python-format
+msgid "This value must be between %(lower)s and %(upper)s."
+msgstr "Det här värdet måste mellan %(lower)s och %(upper)s."
+
+#: core/validators.py:368
+#, python-format
+msgid "This value must be at least %s."
+msgstr "Det här värdet måste minsta vara %s."
+
+#: core/validators.py:370
+#, python-format
+msgid "This value must be no more than %s."
+msgstr "Det här värdet får inte vara mer än %s."
+
+#: core/validators.py:406
+#, python-format
+msgid "This value must be a power of %s."
+msgstr "Det här värdet måste vara en multipel av %s."
+
+#: core/validators.py:417
+msgid "Please enter a valid decimal number."
+msgstr "Fyll i ett giltigt decimaltal."
+
+#: 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] "Fyll i ett giltigt decimaltal med mindre än %s siffra totalt."
+msgstr[1] "Fyll i ett giltigt decimaltal med mindre än %s siffror totalt."
+
+#: 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] "Fyll i ett giltigt decimaltal med en heltalsdel som inte är mer än %s siffra."
+msgstr[1] "Fyll i ett giltigt decimaltal med en heltalsdel som inte är mer än %s siffror."
+
+#: 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] "Fyll i ett giltigt decimaltal med %s decimal som mest."
+msgstr[1] "Fyll i ett giltigt decimaltal med %s decimaler som mest."
+
+#: core/validators.py:437
+#, python-format
+msgid "Make sure your uploaded file is at least %s bytes big."
+msgstr "Se till att filen du laddade upp är minst %s bytes stor."
+
+#: core/validators.py:438
+#, python-format
+msgid "Make sure your uploaded file is at most %s bytes big."
+msgstr "Se till att filen du laddade upp är som mest %s bytes stor."
+
+#: core/validators.py:455
+msgid "The format for this field is wrong."
+msgstr "Formatet på det här fältet är fel."
+
+#: core/validators.py:470
+msgid "This field is invalid."
+msgstr "Det här fältet är ogiltigt."
+
+#: core/validators.py:506
+#, python-format
+msgid "Could not retrieve anything from %s."
+msgstr "Kunde inte hämta något från %s."
+
+#: core/validators.py:509
+#, python-format
+msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
+msgstr "URL:en %(url)s returnerade den ogiltiga Content-Type headern '%(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 ""
+"Var god avsluta den oavslutade taggen %(tag)s på rad %(line)s. (Raden börjar "
+"med \"%(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 ""
+"En del text från rad %(line)s är inte tillåtet i det sammanhanget. (Raden "
+"börjar med \"%(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\" på rad %(line)s är inte ett giltigt attribut. (Raden startar "
+"med \"%(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>\" på rad %(line)s är en ogiltig tagg. (Raden börjar med \"%"
+"(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 ""
+"En tagg på rad %(line)s saknar en eller flera nödvändiga attribut. (Raden "
+"börjar med \"%(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 ""
+"Attributet \"%(attr)s\" på rad %(line)s har ett ogiltigt värde. (Raden "
+"börjar med \"%(start)s\".)"
+
+#: views/generic/create_update.py:43
+#, python-format
+msgid "The %(verbose_name)s was created successfully."
+msgstr "%(verbose_name)s skapades framgångsrikt."
+
+#: views/generic/create_update.py:117
+#, python-format
+msgid "The %(verbose_name)s was updated successfully."
+msgstr " %(verbose_name)s uppdaterades framgångsrikt."
+
+#: views/generic/create_update.py:184
+#, python-format
+msgid "The %(verbose_name)s was deleted."
+msgstr "%(verbose_name)s togs bort."
+
+#: newforms/models.py:164 newforms/fields.py:360
+msgid "Select a valid choice. That choice is not one of the available choices."
+msgstr "Välj ett giltigt alternativ. Det valet finns inte bland tillgängliga alternativ."
+
+#: newforms/models.py:181 newforms/fields.py:378 newforms/fields.py:454
+msgid "Enter a list of values."
+msgstr "Fyll i en lista med värden."
+
+#: newforms/models.py:187 newforms/fields.py:387
+#, python-format
+msgid "Select a valid choice. %s is not one of the available choices."
+msgstr "Välj ett giltigt alternativ. '%s' finns inte bland tillgängliga alternativ."
+
+#: newforms/fields.py:101 newforms/fields.py:254
+#, python-format
+msgid "Ensure this value has at most %d characters."
+msgstr "Se till att din text inte har mer än %d tecken."
+
+#: newforms/fields.py:103 newforms/fields.py:256
+#, python-format
+msgid "Ensure this value has at least %d characters."
+msgstr "Se till att din text har minst %d tecken."
+
+#: newforms/fields.py:128
+#, python-format
+msgid "Ensure this value is less than or equal to %s."
+msgstr "Se till att detta värdet är mindre än eller lika med %s."
+
+#: newforms/fields.py:130
+#, python-format
+msgid "Ensure this value is greater than or equal to %s."
+msgstr "Se till att detta värde är större eller lika med %s."
+
+#: newforms/fields.py:163
+msgid "Enter a valid date."
+msgstr "Fyll i ett giltigt datum."
+
+#: newforms/fields.py:190
+msgid "Enter a valid time."
+msgstr "Fyll i en giltig tid."
+
+#: newforms/fields.py:226
+msgid "Enter a valid date/time."
+msgstr "Fyll i ett giltigt datum/tid."
+
+#: newforms/fields.py:240
+msgid "Enter a valid value."
+msgstr "Fyll i ett giltigt värde."
+
+#: newforms/fields.py:287 newforms/fields.py:309
+msgid "Enter a valid URL."
+msgstr "Fyll i ett giltigt URL."
+
+#: newforms/fields.py:311
+msgid "This URL appears to be a broken link."
+msgstr "Detta URL verkar vara en trasig länk."
+
+#: contrib/contenttypes/models.py:26
+msgid "python model class name"
+msgstr "python modell klass namn"
+
+#: contrib/contenttypes/models.py:29
+msgid "content type"
+msgstr "innehållstyp"
+
+#: contrib/contenttypes/models.py:30
+msgid "content types"
+msgstr "innehållstyper"
+
+#: contrib/auth/views.py:39
+msgid "Logged out"
+msgstr "Utloggad"
+
+#: contrib/auth/models.py:38 contrib/auth/models.py:57
+msgid "name"
+msgstr "namn"
+
+#: contrib/auth/models.py:40
+msgid "codename"
+msgstr "kodnamn"
+
+#: contrib/auth/models.py:42
+msgid "permission"
+msgstr "rättighet"
+
+#: contrib/auth/models.py:43 contrib/auth/models.py:58
+msgid "permissions"
+msgstr "rättigheter"
+
+#: contrib/auth/models.py:60
+msgid "group"
+msgstr "grupp"
+
+#: contrib/auth/models.py:61 contrib/auth/models.py:100
+msgid "groups"
+msgstr "grupper"
+
+#: contrib/auth/models.py:90
+msgid "username"
+msgstr "användarnamn"
+
+#: contrib/auth/models.py:90
+msgid ""
+"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
+"digits and underscores)."
+msgstr "Obligatorisk. 30 tecken eller mindre. Endast bokstäver, siffror eller understräck."
+
+#: contrib/auth/models.py:91
+msgid "first name"
+msgstr "förnamn"
+
+#: contrib/auth/models.py:92
+msgid "last name"
+msgstr "efternamn"
+
+#: contrib/auth/models.py:93
+msgid "e-mail address"
+msgstr "e-mailadress"
+
+#: contrib/auth/models.py:94
+msgid "password"
+msgstr "lösenord"
+
+#: contrib/auth/models.py:94
+msgid ""
+"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
+"password form</a>."
+msgstr "Använd '[algo]$[salt]$[hexdigest]' eller använd <a href=\"password/\">Ändra lösenord</a>."
+
+#: contrib/auth/models.py:95
+msgid "staff status"
+msgstr "personalstatus"
+
+#: contrib/auth/models.py:95
+msgid "Designates whether the user can log into this admin site."
+msgstr "Avgör om användaren kan logga in på den här admin-siten."
+
+#: contrib/auth/models.py:96
+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 ""
+"Avgör om användaren kan logga in till Django admin. Av-markera denna "
+"istället för att ta bort konton."
+
+#: contrib/auth/models.py:97
+msgid "superuser status"
+msgstr "superanvändare"
+
+#: contrib/auth/models.py:97
+msgid ""
+"Designates that this user has all permissions without explicitly assigning "
+"them."
+msgstr ""
+"Bestämmer att användaren har alla rättigheter utan att uttryckligen tilldela "
+"dem"
+
+#: contrib/auth/models.py:98
+msgid "last login"
+msgstr "senaste inloggning"
+
+#: contrib/auth/models.py:99
+msgid "date joined"
+msgstr "registreringsdatum"
+
+#: 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 ""
+"Förutom de rättigheterna som utdelas manuellt så kommer användaren dessutom "
+"få samma rättigheter som de grupper där han/hon är medlem."
+
+#: contrib/auth/models.py:102
+msgid "user permissions"
+msgstr "användarättigheter"
+
+#: contrib/auth/models.py:105
+msgid "user"
+msgstr "användare"
+
+#: contrib/auth/models.py:106
+msgid "users"
+msgstr "användare"
+
+#: contrib/auth/models.py:111
+msgid "Personal info"
+msgstr "Personlig information"
+
+#: contrib/auth/models.py:112
+msgid "Permissions"
+msgstr "Rättigheter"
+
+#: contrib/auth/models.py:113
+msgid "Important dates"
+msgstr "Viktiga datum"
+
+#: contrib/auth/models.py:114
+msgid "Groups"
+msgstr "Grupper"
+
+#: contrib/auth/models.py:258
+msgid "message"
+msgstr "meddelande"
+
+#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
+msgid "The two password fields didn't match."
+msgstr "De båda lösenorden stämde inte överens."
+
+#: contrib/auth/forms.py:25
+msgid "A user with that username already exists."
+msgstr "En användare med det användarnamnet finns redan."
+
+#: contrib/auth/forms.py:53
+msgid ""
+"Your Web browser doesn't appear to have cookies enabled. Cookies are "
+"required for logging in."
+msgstr ""
+"Din webläsare verkar inte stödja cookies. Cookie behövs för att kunna logga "
+"in."
+
+#: 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 ""
+"V.G. ange ett korrekt användarnamn och lösenord. Observera att båda fälten gör "
+"skillnad på versaler och gemener."
+
+#: contrib/auth/forms.py:62
+msgid "This account is inactive."
+msgstr "Detta konto är inaktivt."
+
+#: contrib/auth/forms.py:85
+msgid ""
+"That e-mail address doesn't have an associated user account. Are you sure "
+"you've registered?"
+msgstr ""
+"Den e-mailadressen har inte något konto associerat med sig. Är du säker på "
+"att du har registrerat dig?"
+
+#: contrib/auth/forms.py:117
+msgid "The two 'new password' fields didn't match."
+msgstr "De båda nya lösenordsfälten stämde inte överens."
+
+#: contrib/auth/forms.py:124
+msgid "Your old password was entered incorrectly. Please enter it again."
+msgstr "Ditt gamla lösenord var felaktigt ifyllt. Var vänlig fyll i det igen"
+
+#: contrib/redirects/models.py:7
+msgid "redirect from"
+msgstr "omdirigera från"
+
+#: contrib/redirects/models.py:8
+msgid ""
+"This should be an absolute path, excluding the domain name. Example: '/"
+"events/search/'."
+msgstr ""
+"Det här bör vara en absolut sökväg, förutom domännamnet. Exempel: '/"
+"handelser/sok/'."
+
+#: contrib/redirects/models.py:9
+msgid "redirect to"
+msgstr "omdirigera till"
+
+#: contrib/redirects/models.py:10
+msgid ""
+"This can be either an absolute path (as above) or a full URL starting with "
+"'http://'."
+msgstr ""
+"Detta kan vara antingen en absolut sökväg (som ovan), eller en komplett "
+"URL som börjar med 'http://'."
+
+#: contrib/redirects/models.py:13
+msgid "redirect"
+msgstr "omdirigera"
+
+#: contrib/redirects/models.py:14
+msgid "redirects"
+msgstr "omdirigeringar"
+
#: contrib/comments/models.py:67 contrib/comments/models.py:166
msgid "object ID"
-msgstr "objektets id"
+msgstr "objektets ID"
#: contrib/comments/models.py:68
msgid "headline"
@@ -75,7 +935,7 @@ msgstr "datum/tid postat"
msgid "is public"
msgstr "är offentligt"
-#: contrib/comments/models.py:85 contrib/admin/views/doc.py:289
+#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304
msgid "IP address"
msgstr "IP-adress"
@@ -92,13 +952,12 @@ msgstr ""
"kommentaren har tagits bort\"-meddelande kommer visas istället"
#: contrib/comments/models.py:91
-#, fuzzy
msgid "comments"
-msgstr "kommentar"
+msgstr "kommentarer"
#: contrib/comments/models.py:131 contrib/comments/models.py:207
msgid "Content object"
-msgstr "innehållsobjekt"
+msgstr "Innehållsobjekt"
#: contrib/comments/models.py:159
#, python-format
@@ -128,14 +987,12 @@ msgid "approved by staff"
msgstr "godkänd av personal"
#: contrib/comments/models.py:176
-#, fuzzy
msgid "free comment"
-msgstr "Fri kommentar"
+msgstr "fri kommentar"
#: contrib/comments/models.py:177
-#, fuzzy
msgid "free comments"
-msgstr "Fria kommentarer"
+msgstr "fria kommentarer"
#: contrib/comments/models.py:233
msgid "score"
@@ -143,17 +1000,15 @@ msgstr "poäng"
#: contrib/comments/models.py:234
msgid "score date"
-msgstr "poängens datum"
+msgstr "poängdatum"
#: contrib/comments/models.py:237
-#, fuzzy
msgid "karma score"
-msgstr "Karmapoäng"
+msgstr "karmapoäng"
#: contrib/comments/models.py:238
-#, fuzzy
msgid "karma scores"
-msgstr "Karmapoäng"
+msgstr "karmapoäng"
#: contrib/comments/models.py:242
#, python-format
@@ -176,14 +1031,12 @@ msgid "flag date"
msgstr "flaggdatum"
#: contrib/comments/models.py:268
-#, fuzzy
msgid "user flag"
-msgstr "Användarflagga"
+msgstr "användares flagga"
#: contrib/comments/models.py:269
-#, fuzzy
msgid "user flags"
-msgstr "Användarflaggor"
+msgstr "användares flaggor"
#: contrib/comments/models.py:273
#, python-format
@@ -192,22 +1045,20 @@ msgstr "Flaggad av %r"
#: contrib/comments/models.py:278
msgid "deletion date"
-msgstr "borttagningsdatum"
+msgstr "borttagnings-datum"
#: contrib/comments/models.py:280
-#, fuzzy
msgid "moderator deletion"
-msgstr "Moderatorborttagning"
+msgstr "moderator-borttagning"
#: contrib/comments/models.py:281
-#, fuzzy
msgid "moderator deletions"
-msgstr "Moderatorborttagningar"
+msgstr "moderator-borttagningar"
#: contrib/comments/models.py:285
#, python-format
msgid "Moderator deletion by %r"
-msgstr "Moderatorborttagning av %r"
+msgstr "Moderator-borttagning av %r"
#: contrib/comments/views/karma.py:19
msgid "Anonymous users cannot vote"
@@ -215,18 +1066,17 @@ msgstr "Anonyma användare kan inte rösta"
#: contrib/comments/views/karma.py:23
msgid "Invalid comment ID"
-msgstr "Kommentaren har ett ogiltigt ID"
+msgstr "Ogiltig kommentaridentifikation"
#: contrib/comments/views/karma.py:25
msgid "No voting for yourself"
msgstr "Du får inte rösta på dig själv"
-#: contrib/comments/views/comments.py:28
-msgid ""
-"This rating is required because you've entered at least one other rating."
+#: contrib/comments/views/comments.py:27
+msgid "This rating is required because you've entered at least one other rating."
msgstr "Det här betyget krävs eftersom du har fyllt i minst ett annat betyg."
-#: 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 "
@@ -239,17 +1089,17 @@ msgid_plural ""
"\n"
"%(text)s"
msgstr[0] ""
-"Den här kommentaren postades av en användare som har postat färre än %(count)"
-"s kommentar:\n"
+"Den här kommentaren postades av en användare som har postat mindre än "
+"%(count)s kommentar:\n"
"\n"
"%(text)s"
msgstr[1] ""
-"Den här kommentaren postades av en användare som har postat färre än %(count)"
-"s kommentarer:\n"
+"Den här kommentaren postades av en användare som har postat mindre än "
+"%(count)s kommentarer:\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"
@@ -260,34 +1110,48 @@ 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 "Endast POSTningar är tillåtna"
+msgstr "Endast POST tillåtet"
-#: 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 "Ett eller fler av fälten som krävs fylldes inte i"
+msgstr "Ett eller flera av de obligatoriska fälten var inte ifyllda"
-#: 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 "Någon fifflade med kommenteringsformuläret (säkerhetsbrott)"
+msgstr "Någon fifflade med kommentarformuläret (säkerhetsbrott)"
-#: 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 ""
-"Kommenteringsformuläret har en ogiltig 'target'-parameter -- objektets ID är "
+"Kommentars-formuläret hade en ogiltig 'mål'-parameter -- objektets ID var "
"ogiltigt"
#: contrib/comments/views/comments.py:257
#: contrib/comments/views/comments.py:321
msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "Kommenteringsformuläret skickade varken 'förhandsgranska' eller 'post'"
+msgstr "Kommentars-formuläret skickade varken 'förhandsgranska' eller 'post'"
+
+#: contrib/comments/templates/comments/freeform.html:4
+msgid "Your name:"
+msgstr "Ditt namn:"
+
+#: contrib/comments/templates/comments/freeform.html:5
+#: contrib/comments/templates/comments/form.html:28
+msgid "Comment:"
+msgstr "Kommentar:"
+
+#: contrib/comments/templates/comments/freeform.html:10
+#: contrib/comments/templates/comments/form.html:35
+msgid "Preview comment"
+msgstr "Förhandsgranska kommentar"
#: contrib/comments/templates/comments/form.html:6
#: contrib/comments/templates/comments/form.html:8
@@ -296,21 +1160,12 @@ msgid "Username:"
msgstr "Användarnamn:"
#: contrib/comments/templates/comments/form.html:6
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
-msgstr "Lösenord:"
-
-#: contrib/comments/templates/comments/form.html:6
-#, fuzzy
-msgid "Forgotten your password?"
-msgstr "Ändra mitt lösenord"
-
-#: contrib/comments/templates/comments/form.html:8
#: contrib/admin/templates/admin/object_history.html:3
#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
-#: contrib/admin/templates/admin/delete_confirmation.html:3
#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/auth/user/change_password.html:9
#: contrib/admin/templates/registration/password_change_done.html:3
#: contrib/admin/templates/registration/password_change_form.html:3
#: contrib/admin/templates/admin_doc/bookmarklets.html:4
@@ -326,41 +1181,116 @@ msgstr "Ändra mitt lösenord"
msgid "Log out"
msgstr "Logga ut"
+#: contrib/comments/templates/comments/form.html:8
+#: contrib/admin/templates/admin/login.html:20
+msgid "Password:"
+msgstr "Lösenord:"
+
+#: contrib/comments/templates/comments/form.html:8
+msgid "Forgotten your password?"
+msgstr "Glömt ditt lösenord?"
+
#: contrib/comments/templates/comments/form.html:12
-#, fuzzy
msgid "Ratings"
-msgstr "betyg #1"
+msgstr "Betyg"
#: contrib/comments/templates/comments/form.html:12
#: contrib/comments/templates/comments/form.html:23
msgid "Required"
-msgstr ""
+msgstr "Obligatorisk"
#: contrib/comments/templates/comments/form.html:12
#: contrib/comments/templates/comments/form.html:23
msgid "Optional"
-msgstr ""
+msgstr "Valfri"
#: contrib/comments/templates/comments/form.html:23
msgid "Post a photo"
+msgstr "Lägg till foto"
+
+#: 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 "Exempel: '/om/kontakt/'. Se till att ha inledande och avslutande snedsträck."
+
+#: contrib/flatpages/models.py:9
+msgid "title"
+msgstr "titel"
+
+#: contrib/flatpages/models.py:10
+msgid "content"
+msgstr "innehåll"
+
+#: contrib/flatpages/models.py:11
+msgid "enable comments"
+msgstr "aktivera kommentarer"
+
+#: contrib/flatpages/models.py:12
+msgid "template name"
+msgstr "mallnamn"
+
+#: contrib/flatpages/models.py:13
+msgid ""
+"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
+"will use 'flatpages/default.html'."
msgstr ""
+"Exempel: 'sidor/kontaktsida.html'. Om det här inte fylls i kommer systemet "
+"att använda 'sidor/default.html'."
-#: contrib/comments/templates/comments/form.html:27
-#: contrib/comments/templates/comments/freeform.html:5
-#, fuzzy
-msgid "Comment:"
-msgstr "Kommentar"
+#: contrib/flatpages/models.py:14
+msgid "registration required"
+msgstr "registrering krävs"
-#: contrib/comments/templates/comments/form.html:32
-#: contrib/comments/templates/comments/freeform.html:9
-#, fuzzy
-msgid "Preview comment"
-msgstr "Fri kommentar"
+#: contrib/flatpages/models.py:14
+msgid "If this is checked, only logged-in users will be able to view the page."
+msgstr "Om det här bockas i kommer endast inloggade användare att kunna visa sidan"
-#: contrib/comments/templates/comments/freeform.html:4
-#, fuzzy
-msgid "Your name:"
-msgstr "användarnamn"
+#: contrib/flatpages/models.py:18
+msgid "flat page"
+msgstr "flatsida"
+
+#: contrib/flatpages/models.py:19
+msgid "flat pages"
+msgstr "flatsidor"
+
+#: contrib/sessions/models.py:51
+msgid "session key"
+msgstr "sessionsnyckel"
+
+#: contrib/sessions/models.py:52
+msgid "session data"
+msgstr "sessionsdata"
+
+#: contrib/sessions/models.py:53
+msgid "expire date"
+msgstr "utgångsdatum"
+
+#: contrib/sessions/models.py:57
+msgid "session"
+msgstr "session"
+
+#: contrib/sessions/models.py:58
+msgid "sessions"
+msgstr "sessioner"
+
+#: contrib/sites/models.py:10
+msgid "domain name"
+msgstr "domännamn"
+
+#: contrib/sites/models.py:11
+msgid "display name"
+msgstr "visat namn"
+
+#: contrib/sites/models.py:15
+msgid "site"
+msgstr "site"
+
+#: contrib/sites/models.py:16
+msgid "sites"
+msgstr "siter"
#: contrib/admin/filterspecs.py:40
#, python-format
@@ -372,7 +1302,7 @@ msgstr ""
"<ul>\n"
#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143
+#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169
msgid "All"
msgstr "Alla"
@@ -396,21 +1326,9 @@ msgstr "Den här månaden"
msgid "This year"
msgstr "Det här året"
-#: contrib/admin/filterspecs.py:143
-msgid "Yes"
-msgstr "Ja"
-
-#: contrib/admin/filterspecs.py:143
-msgid "No"
-msgstr "Nej"
-
-#: contrib/admin/filterspecs.py:150
-msgid "Unknown"
-msgstr "Okänt"
-
#: contrib/admin/models.py:16
msgid "action time"
-msgstr "tid för händelse"
+msgstr "händelsetid"
#: contrib/admin/models.py:19
msgid "object id"
@@ -436,220 +1354,299 @@ msgstr "loggpost"
msgid "log entries"
msgstr "loggposter"
-#: contrib/admin/templatetags/admin_list.py:228
+#: contrib/admin/templatetags/admin_list.py:247
msgid "All dates"
msgstr "Alla datum"
-#: contrib/admin/views/decorators.py:9 contrib/auth/forms.py:36
-#: contrib/auth/forms.py:41
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-
-#: contrib/admin/views/decorators.py:23
+#: contrib/admin/views/decorators.py:24
#: contrib/admin/templates/admin/login.html:25
msgid "Log in"
msgstr "Logga in"
-#: 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 ""
-"Du måste logga in igen, eftersom din session har tagit slut. Oroa dig inte: "
-"ditt bidrag har sparats."
+"V.G. logga in igen, eftersom din session har tagit slut. Oroa dig inte: ditt "
+"bidrag har sparats."
-#: 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 ""
-"Det ser ut som om din webbläsare inte är konfigurerad att acceptera kakor. "
-"Aktivera kakor, ladda om den här sidan, och försök igen."
+"Det ser ut som om din webläsare inte är konfigurerad att acceptera cookies. "
+"Aktivera cookies, ladda om den här sidan, och försök igen."
-#: contrib/admin/views/decorators.py:82
+#: contrib/admin/views/decorators.py:83
msgid "Usernames cannot contain the '@' character."
msgstr "Användarnamn kan inte innehålla tecknet '@'."
-#: 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 "Din e-postadress är inte ditt användarnamn. Försök med '%s' istället."
+msgstr "Din e-mailadress är inte ditt användarnamn. Försök med '%s' istället."
-#: contrib/admin/views/main.py:226
-msgid "Site administration"
-msgstr "Hemsideadministration"
-
-#: 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 "%(name)set \"%(obj)s\" lades till."
-#: 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 "Du kan ändra det igen här under."
-#: contrib/admin/views/main.py:272 contrib/admin/views/main.py:357
+#: contrib/admin/views/auth.py:30
+msgid "Add user"
+msgstr "Lägg till användare"
+
+#: contrib/admin/views/auth.py:57
+msgid "Password changed successfully."
+msgstr "Lösenordet ändrades framgångsrikt."
+
+#: contrib/admin/views/auth.py:64
+#, python-format
+msgid "Change password: %s"
+msgstr "Ändra lösenord: %s"
+
+#: contrib/admin/views/main.py:223
+msgid "Site administration"
+msgstr "Administration"
+
+#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356
#, python-format
msgid "You may add another %s below."
-msgstr "Du kan lägga till en till %s här under"
+msgstr "Du kan lägga till en till %s här under."
-#: contrib/admin/views/main.py:290
+#: contrib/admin/views/main.py:289
#, python-format
msgid "Add %s"
msgstr "Lägg till %s"
-#: contrib/admin/views/main.py:336
+#: contrib/admin/views/main.py:335
#, python-format
msgid "Added %s."
msgstr "Lade till %s."
-#: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338
-#: contrib/admin/views/main.py:340
-msgid "and"
-msgstr "och"
-
-#: contrib/admin/views/main.py:338
+#: contrib/admin/views/main.py:337
#, python-format
msgid "Changed %s."
msgstr "Ändrade %s."
-#: contrib/admin/views/main.py:340
+#: contrib/admin/views/main.py:339
#, python-format
msgid "Deleted %s."
msgstr "Tog bort %s."
-#: contrib/admin/views/main.py:343
+#: contrib/admin/views/main.py:342
msgid "No fields changed."
msgstr "Inga fält ändrade."
-#: contrib/admin/views/main.py:346
+#: contrib/admin/views/main.py:345
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr "%(name)set \"%(obj)s\" ändrades."
-#: 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."
+msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
msgstr "%(name)set \"%(obj)s\" lades till. Du kan ändra det igen här under."
-#: contrib/admin/views/main.py:392
+#: contrib/admin/views/main.py:391
#, python-format
msgid "Change %s"
msgstr "Ändra %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 "Ett eller flera %(fieldname)s i %(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 "Ett eller flera %(fieldname)s i %(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 "%(name)set \"%(obj)s\" togs bort."
-#: contrib/admin/views/main.py:511
+#: contrib/admin/views/main.py:517
msgid "Are you sure?"
msgstr "Är du säker?"
-#: contrib/admin/views/main.py:533
+#: contrib/admin/views/main.py:539
#, python-format
msgid "Change history: %s"
msgstr "Ändra historien: %s"
-#: contrib/admin/views/main.py:565
+#: contrib/admin/views/main.py:573
#, python-format
msgid "Select %s"
msgstr "Välj %s"
-#: contrib/admin/views/main.py:565
+#: contrib/admin/views/main.py:573
#, python-format
msgid "Select %s to change"
-msgstr "Välj vilken %s du vill ändra"
+msgstr "Välj %s att ändra"
+
+#: contrib/admin/views/main.py:768
+msgid "Database error"
+msgstr "Databas fel"
+
+#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48
+#: contrib/admin/views/doc.py:50
+msgid "tag:"
+msgstr "tagg:"
-#: contrib/admin/views/doc.py:277 contrib/admin/views/doc.py:286
-#: contrib/admin/views/doc.py:288 contrib/admin/views/doc.py:294
-#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:297
+#: contrib/admin/views/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
+msgid "view:"
+msgstr "Vy:"
+
+#: contrib/admin/views/doc.py:164
+#, python-format
+msgid "App %r not found"
+msgstr "Applikation %r hittades inte"
+
+#: contrib/admin/views/doc.py:171
+#, python-format
+msgid "Model %(model_name)r not found in app %(app_label)r"
+msgstr "Modellen %(model_name)r hittades inte i applikation %(app_label)r"
+
+#: contrib/admin/views/doc.py:183
+#, python-format
+msgid "the related `%(app_label)s.%(data_type)s` object"
+msgstr "Det sammalänkade `%(app_label)s.%(data_type)s` objektet"
+
+#: 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
+#, python-format
+msgid "related `%(app_label)s.%(object_name)s` objects"
+msgstr "sammanlänkade `%(app_label)s.%(object_name)s` objekt"
+
+#: contrib/admin/views/doc.py:219
+#, python-format
+msgid "all %s"
+msgstr "alla %s"
+
+#: contrib/admin/views/doc.py:224
+#, python-format
+msgid "number of %s"
+msgstr "antal %s"
+
+#: contrib/admin/views/doc.py:229
+#, python-format
+msgid "Fields on %s objects"
+msgstr "Fält på %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
msgid "Integer"
msgstr "Heltal"
-#: contrib/admin/views/doc.py:278
+#: contrib/admin/views/doc.py:292
msgid "Boolean (Either True or False)"
msgstr "Boolesk (antingen Sann eller Falsk)"
-#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:296
+#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311
#, python-format
msgid "String (up to %(maxlength)s)"
msgstr "Sträng (upp till %(maxlength)s)"
-#: contrib/admin/views/doc.py:280
+#: contrib/admin/views/doc.py:294
msgid "Comma-separated integers"
msgstr "Komma-separerade heltal"
-#: contrib/admin/views/doc.py:281
+#: contrib/admin/views/doc.py:295
msgid "Date (without time)"
msgstr "Datum (utan tid)"
-#: contrib/admin/views/doc.py:282
+#: contrib/admin/views/doc.py:296
msgid "Date (with time)"
msgstr "Datum (med tid)"
-#: contrib/admin/views/doc.py:283
+#: contrib/admin/views/doc.py:297
msgid "E-mail address"
msgstr "E-postadress:"
-#: contrib/admin/views/doc.py:284 contrib/admin/views/doc.py:287
+#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299
+#: contrib/admin/views/doc.py:302
msgid "File path"
msgstr "Sökväg"
-#: contrib/admin/views/doc.py:285
+#: contrib/admin/views/doc.py:300
msgid "Decimal number"
-msgstr "decemaltal"
+msgstr "Decimaltal"
-#: contrib/admin/views/doc.py:291
+#: contrib/admin/views/doc.py:306
msgid "Boolean (Either True, False or None)"
-msgstr "Boolesk (antingen Sann, Falsk eller Inget)"
+msgstr "Boolesk (antingen True, False eller None)"
-#: contrib/admin/views/doc.py:292
+#: contrib/admin/views/doc.py:307
msgid "Relation to parent model"
-msgstr "Relation till förälder"
+msgstr "Relation till förälder-modell"
-#: contrib/admin/views/doc.py:293
+#: contrib/admin/views/doc.py:308
msgid "Phone number"
msgstr "Telefonnummer"
-#: contrib/admin/views/doc.py:298
+#: contrib/admin/views/doc.py:313
msgid "Text"
msgstr "Text"
-#: contrib/admin/views/doc.py:299
+#: contrib/admin/views/doc.py:314
msgid "Time"
msgstr "Tid"
-#: contrib/admin/views/doc.py:300 contrib/flatpages/models.py:7
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admin/views/doc.py:301
+#: contrib/admin/views/doc.py:316
msgid "U.S. state (two uppercase letters)"
-msgstr "Stat i USA (två stora bokstäver)"
+msgstr "Stat i USA (två versaler)"
-#: contrib/admin/views/doc.py:302
+#: 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 verkar inte vara ett urlmönster-objekt"
+
+#: contrib/admin/templates/widget/file.html:2
+msgid "Currently:"
+msgstr "Nuvarande:"
+
+#: contrib/admin/templates/widget/file.html:3
+msgid "Change:"
+msgstr "Ändra:"
+
+#: contrib/admin/templates/widget/date_time.html:3
+msgid "Date:"
+msgstr "Datum:"
+
+#: contrib/admin/templates/widget/date_time.html:4
+msgid "Time:"
+msgstr "Tid:"
+
#: contrib/admin/templates/admin/object_history.html:3
#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
-#: contrib/admin/templates/admin/delete_confirmation.html:3
#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/auth/user/change_password.html:9
#: contrib/admin/templates/registration/password_change_done.html:3
#: contrib/admin/templates/registration/password_change_form.html:3
#: contrib/admin/templates/admin_doc/bookmarklets.html:3
@@ -658,9 +1655,12 @@ msgstr "Dokumentation"
#: contrib/admin/templates/admin/object_history.html:3
#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
-#: contrib/admin/templates/admin/delete_confirmation.html:3
#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/auth/user/change_password.html:9
+#: contrib/admin/templates/admin/auth/user/change_password.html:15
+#: contrib/admin/templates/admin/auth/user/change_password.html:46
#: contrib/admin/templates/registration/password_change_done.html:3
#: contrib/admin/templates/registration/password_change_form.html:3
#: contrib/admin/templates/admin_doc/bookmarklets.html:4
@@ -677,11 +1677,13 @@ msgid "Change password"
msgstr "Ändra lösenord"
#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/500.html:4
#: contrib/admin/templates/admin/change_list.html:6
-#: contrib/admin/templates/admin/base.html:28
-#: contrib/admin/templates/admin/delete_confirmation.html:6
+#: contrib/admin/templates/admin/500.html:4
+#: contrib/admin/templates/admin/invalid_setup.html:4
#: contrib/admin/templates/admin/change_form.html:13
+#: contrib/admin/templates/admin/base.html:30
+#: contrib/admin/templates/admin/delete_confirmation.html:6
+#: contrib/admin/templates/admin/auth/user/change_password.html:12
#: contrib/admin/templates/registration/password_change_done.html:4
#: contrib/admin/templates/registration/password_reset_form.html:4
#: contrib/admin/templates/registration/logged_out.html:4
@@ -692,7 +1694,7 @@ msgid "Home"
msgstr "Hem"
#: 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 "Historik"
@@ -718,15 +1720,17 @@ msgid ""
"admin site."
msgstr ""
"Det här objektet har ingen ändringshistorik. Det lades antagligen inte till "
-"i den här admin-sidan"
+"i den här admin-siten"
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Djangos sidadministration"
+#: contrib/admin/templates/admin/change_list.html:12
+#, python-format
+msgid "Add %(name)s"
+msgstr "Lägg till %(name)s"
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Administration för Django"
+#: contrib/admin/templates/admin/filter.html:2
+#, python-format
+msgid " By %(filter_title)s "
+msgstr " Av %(filter_title)s "
#: contrib/admin/templates/admin/500.html:4
msgid "Server error"
@@ -745,8 +1749,49 @@ msgid ""
"There's been an error. It's been reported to the site administrators via e-"
"mail and should be fixed shortly. Thanks for your patience."
msgstr ""
-"Ett fel har uppstått. Sidadministratören har meddelats via e-post och felet "
-"bör åtgärdas snart. Tack för ditt tålamod."
+"Ett fel har uppstått. Administratören har meddelats via e-mail och "
+"felet bör åtgärdas snart. Tack för ditt tålamod."
+
+#: contrib/admin/templates/admin/invalid_setup.html:8
+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 ""
+"Någonting är fel med din databasinstallation. Se till att de rätta tabellerna har "
+"skapats och att databasen är läsbar av rätt användare."
+
+#: contrib/admin/templates/admin/search_form.html:8
+msgid "Go"
+msgstr "Utför"
+
+#: contrib/admin/templates/admin/search_form.html:10
+#, python-format
+msgid "1 result"
+msgid_plural "%(counter)s results"
+msgstr[0] "1 resultat"
+msgstr[1] "%(counter)s resultat"
+
+#: contrib/admin/templates/admin/search_form.html:10
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr "%(full_result_count)s totalt"
+
+#: contrib/admin/templates/admin/pagination.html:10
+msgid "Show all"
+msgstr "Visa alla"
+
+#: contrib/admin/templates/admin/base_site.html:4
+msgid "Django site admin"
+msgstr "Django site-administration"
+
+#: contrib/admin/templates/admin/base_site.html:7
+msgid "Django administration"
+msgstr "Django administration"
+
+#: contrib/admin/templates/admin/filters.html:4
+msgid "Filter"
+msgstr "Filter"
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
@@ -760,7 +1805,12 @@ msgstr "Vi är ledsna, men den efterfrågade sidan kunde inte hittas."
#: contrib/admin/templates/admin/index.html:17
#, python-format
msgid "Models available in the %(name)s application."
-msgstr ""
+msgstr "Modeller tillgängliga i %(name)s applikationen."
+
+#: 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
@@ -773,30 +1823,40 @@ msgstr "Ändra"
#: contrib/admin/templates/admin/index.html:44
msgid "You don't have permission to edit anything."
-msgstr "Du har inte rätt att ändra något."
+msgstr "Du har inte rättigheter att ändra något."
#: contrib/admin/templates/admin/index.html:52
msgid "Recent Actions"
-msgstr "Senaste händelserna"
+msgstr "Senaste Händelserna"
#: contrib/admin/templates/admin/index.html:53
msgid "My Actions"
-msgstr "Mina händelser"
+msgstr "Mina Händelser"
#: contrib/admin/templates/admin/index.html:57
msgid "None available"
msgstr "Inga tillgängliga"
-#: contrib/admin/templates/admin/change_list.html:11
-#, python-format
-msgid "Add %(name)s"
-msgstr "Lägg till %(name)s"
+#: contrib/admin/templates/admin/change_form.html:22
+msgid "View on site"
+msgstr "Visa på siten"
+
+#: 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] "Rätta till felet nedan."
+msgstr[1] "Rätta till felen nedan."
-#: contrib/admin/templates/admin/login.html:22
-msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-msgstr "Har du <a href=\"/password_reset/\">glömt ditt lösenord</a>?"
+#: contrib/admin/templates/admin/change_form.html:50
+msgid "Ordering"
+msgstr "Sortering"
-#: contrib/admin/templates/admin/base.html:23
+#: contrib/admin/templates/admin/change_form.html:53
+msgid "Order:"
+msgstr "Sortera:"
+
+#: contrib/admin/templates/admin/base.html:25
msgid "Welcome,"
msgstr "Välkommen,"
@@ -808,54 +1868,27 @@ msgstr "Ta bort"
#: 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 ""
-"Att ta bort %(object_name)s '%(object)s' skulle innebära att besläktade "
+"Att ta bort %(object_name)s '%(escaped_object)s' skulle innebära att besläktade "
"objekt togs bort, men ditt konto har inte rättigheter att ta bort följande "
"objekttyper:"
#: 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 ""
-"Är du säker på att du vill ta bort %(object_name)s \"%(object)s\"? Följande "
-"besläktade föremål kommer att tas bort:"
+"Är du säker på att du vill ta bort %(object_name)s \"%(escaped_object)s\"? Alla "
+"dessa sammanlänkade objekt kommer att tas bort:"
#: contrib/admin/templates/admin/delete_confirmation.html:26
msgid "Yes, I'm sure"
msgstr "Ja, jag är säker"
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(title)s "
-msgstr " Efter %(title)s "
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Utför"
-
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "View on site"
-msgstr "Visa på hemsidan"
-
-#: contrib/admin/templates/admin/change_form.html:30
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Rätta till felet nedan."
-msgstr[1] "Rätta till felen nedan."
-
-#: contrib/admin/templates/admin/change_form.html:48
-msgid "Ordering"
-msgstr "Sortering"
-
-#: contrib/admin/templates/admin/change_form.html:51
-msgid "Order:"
-msgstr "Sortera:"
-
#: contrib/admin/templates/admin/submit_line.html:4
msgid "Save as new"
msgstr "Spara som ny"
@@ -872,6 +1905,38 @@ msgstr "Spara och fortsätt redigera"
msgid "Save"
msgstr "Spara"
+#: contrib/admin/templates/admin/auth/user/change_password.html:28
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr "Ange nytt lösenord för användaren <strong>%(username)s</strong>."
+
+#: contrib/admin/templates/admin/auth/user/change_password.html:34
+#: contrib/admin/templates/admin/auth/user/add_form.html:18
+msgid "Password"
+msgstr "Lösenord"
+
+#: contrib/admin/templates/admin/auth/user/change_password.html:39
+#: contrib/admin/templates/admin/auth/user/add_form.html:23
+msgid "Password (again)"
+msgstr "Lösenord (igen)"
+
+#: 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 "Fyll i samma lösenord som ovan för verifiering."
+
+#: 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 ""
+"Ange först ett användarnamn och ett lösenord. Sedan kommer du att kunna ändra "
+"fler användaralternativ."
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:12
+msgid "Username"
+msgstr "Användarnamn"
+
#: 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
@@ -900,7 +1965,7 @@ msgid ""
"Forgotten your password? Enter your e-mail address below, and we'll reset "
"your password and e-mail the new one to you."
msgstr ""
-"Har du glömt ditt lösenord? Fyll i din e-postadress nedan, så nollställer vi "
+"Har du glömt ditt lösenord? Fyll i din e-mailadress nedan, så nollställer vi "
"ditt lösenord och mailar det nya till dig."
#: contrib/admin/templates/registration/password_reset_form.html:16
@@ -913,7 +1978,7 @@ msgstr "Nollställ mitt lösenord"
#: contrib/admin/templates/registration/logged_out.html:8
msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Tack för att du spenderade kvalitetstid med webbsidan idag."
+msgstr "Tack för att du spenderade kvalitetstid med web-siten idag."
#: contrib/admin/templates/registration/logged_out.html:10
msgid "Log in again"
@@ -929,7 +1994,7 @@ msgid ""
"We've e-mailed a new password to the e-mail address you submitted. You "
"should be receiving it shortly."
msgstr ""
-"Vi har skickat ett nytt lösenord till e-postadressen du fyllde i. Det bör "
+"Vi har skickat ett nytt lösenord till e-mailadressen du fyllde i. Det bör "
"anlända snarast."
#: contrib/admin/templates/registration/password_change_form.html:12
@@ -982,7 +2047,7 @@ msgstr "Ditt användarnamn, om du har glömt:"
#: contrib/admin/templates/registration/password_reset_email.html:13
msgid "Thanks for using our site!"
-msgstr "Tack för att du använder vår sida!"
+msgstr "Tack för att du använder vår site!"
#: contrib/admin/templates/registration/password_reset_email.html:15
#, python-format
@@ -1011,9 +2076,9 @@ msgstr ""
"<p class=\"help\">För att installera smarta bokmärken, dra länken till din\n"
"verktygsrad med bokmärken, eller högerklicka på länken och lägg till den\n"
"till dina bokmärken. Nu kan du välja det smarta bokmärket från alla sidor\n"
-"på hemsidan. Notera att några av desa smarta bokmärken kräver att du tittar\n"
-"på sidan på en dator som är \"intern\" (prata med din systemadministratör\n"
-"om du inte är säker på om din dator är \"intern\")</p>\n"
+"på siten. Observera att några av dessa smarta bokmärken kräver att du besöker\n"
+"sidan från en dator som är \"intern\" (tala med din systemadministratör\n"
+"om du inte är säker på om din dator är \"intern\").</p>\n"
#: contrib/admin/templates/admin_doc/bookmarklets.html:19
msgid "Documentation for this page"
@@ -1029,14 +2094,15 @@ msgstr ""
#: contrib/admin/templates/admin_doc/bookmarklets.html:22
msgid "Show object ID"
-msgstr "Visa objektets id"
+msgstr "Visa objektets 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 ""
-"Visa innehållstypen och ID:t för sidor som representerar ett enskillt objekt."
+"Visa innehållstypen och det unika ID:t för sidor som representerar ett "
+"enskilt objekt."
#: contrib/admin/templates/admin_doc/bookmarklets.html:25
msgid "Edit this object (current window)"
@@ -1045,7 +2111,7 @@ msgstr "Redigera det här objektet (nuvarande fönster)"
#: contrib/admin/templates/admin_doc/bookmarklets.html:26
msgid "Jumps to the admin page for pages that represent a single object."
msgstr ""
-"Hoppar till administrationssidan för sidor som representerar ett enskillt "
+"Hoppar till administrationssidan för sidor som representerar ett enskilt "
"objekt."
#: contrib/admin/templates/admin_doc/bookmarklets.html:28
@@ -1054,416 +2120,139 @@ msgstr "Redigera det här objektet (nytt fönster)"
#: contrib/admin/templates/admin_doc/bookmarklets.html:29
msgid "As above, but opens the admin page in a new window."
-msgstr "Som ovan, men öppnaradministrationssidan i ett nytt fönster."
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Datum:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Tid:"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr ""
-
-#: contrib/admin/templates/widget/file.html:3
-#, fuzzy
-msgid "Change:"
-msgstr "Ändra"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "vidarebefodra från"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Det här bör vara en absolut sökväg, förutom domännamnet. Exempel: '/"
-"handelser/sok/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "vidarebefodra till"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Det här kan vara antingen en absolut sökväg (som ovan), eller en komplett "
-"adress som börjar med 'http://'."
-
-#: contrib/redirects/models.py:12
-msgid "redirect"
-msgstr "vidarebefodra"
-
-#: contrib/redirects/models.py:13
-msgid "redirects"
-msgstr "vidarebefodringar"
-
-#: contrib/flatpages/models.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Exempel: '/om/kontakt/'. Se till att ha inledande och avslutande snedsträck."
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "titel"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "innehåll"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "aktivera kommentarer"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "mallnamn"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page'. If this isn't provided, the system will "
-"use 'flatpages/default'."
-msgstr ""
-"Exempel: 'flatpages/kontaktsida'. Om det här inte fylls i kommer systemet "
-"att använda 'flatpages/default'."
+msgstr "Som ovan, men öppnar administrationssidan i ett nytt fönster."
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "registrering krävs"
+#: contrib/localflavor/uk/forms.py:18
+msgid "Enter a postcode. A space is required between the two postcode parts."
+msgstr "Fyll i ett postnummer. Du måste ha mellanslag mellan nummerdelarna."
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Om det här bockas i kommer endast inloggade användare att kunna visa sidan"
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "flatsida"
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "flatsidor"
-
-#: contrib/auth/models.py:13 contrib/auth/models.py:26
-msgid "name"
-msgstr "namn"
-
-#: contrib/auth/models.py:15
-msgid "codename"
-msgstr "kodnamn"
-
-#: contrib/auth/models.py:17
-#, fuzzy
-msgid "permission"
-msgstr "Rättighet"
-
-#: contrib/auth/models.py:18 contrib/auth/models.py:27
-#, fuzzy
-msgid "permissions"
-msgstr "Rättigheter"
-
-#: contrib/auth/models.py:29
-#, fuzzy
-msgid "group"
-msgstr "Grupp"
-
-#: contrib/auth/models.py:30 contrib/auth/models.py:65
-#, fuzzy
-msgid "groups"
-msgstr "Grupper"
-
-#: contrib/auth/models.py:55
-msgid "username"
-msgstr "användarnamn"
-
-#: contrib/auth/models.py:56
-msgid "first name"
-msgstr "förnamn"
-
-#: contrib/auth/models.py:57
-msgid "last name"
-msgstr "efternamn"
-
-#: contrib/auth/models.py:58
-msgid "e-mail address"
-msgstr "e-postadress"
-
-#: contrib/auth/models.py:59
-msgid "password"
-msgstr "lösenord"
-
-#: contrib/auth/models.py:59
-msgid "Use '[algo]$[salt]$[hexdigest]'"
-msgstr "Använd '[algo]$[salt]$[hexdigest]'"
-
-#: contrib/auth/models.py:60
-msgid "staff status"
-msgstr "personalstatus"
-
-#: contrib/auth/models.py:60
-msgid "Designates whether the user can log into this admin site."
-msgstr "Avgör om användaren kan logga in till den här administrationssidan."
-
-#: contrib/auth/models.py:61
-msgid "active"
-msgstr "aktiv"
-
-#: contrib/auth/models.py:62
-msgid "superuser status"
-msgstr "superanvändare"
-
-#: contrib/auth/models.py:63
-msgid "last login"
-msgstr "senaste inloggning"
-
-#: contrib/auth/models.py:64
-msgid "date joined"
-msgstr "registreringsdatum"
-
-#: 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 ""
-"Förutom de rättigheterna som utdelas manuellt så kommer användaren dessutom "
-"få samma rättigheter som de grupper där han/hon är medlem."
-
-#: contrib/auth/models.py:67
-#, fuzzy
-msgid "user permissions"
-msgstr "Rättigheter"
-
-#: contrib/auth/models.py:70
-#, fuzzy
-msgid "user"
-msgstr "Användare"
-
-#: contrib/auth/models.py:71
-#, fuzzy
-msgid "users"
-msgstr "Användare"
-
-#: contrib/auth/models.py:76
-msgid "Personal info"
-msgstr "Personlig information"
-
-#: contrib/auth/models.py:77
-msgid "Permissions"
-msgstr "Rättigheter"
-
-#: contrib/auth/models.py:78
-msgid "Important dates"
-msgstr "Viktiga datum"
-
-#: contrib/auth/models.py:79
-msgid "Groups"
-msgstr "Grupper"
-
-#: contrib/auth/models.py:219
-#, fuzzy
-msgid "message"
-msgstr "Meddelande"
-
-#: 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:25
-#, fuzzy
-msgid "python model class name"
-msgstr "pythonmodulnamn"
-
-#: contrib/contenttypes/models.py:28
-msgid "content type"
-msgstr "innehållstyp"
-
-#: contrib/contenttypes/models.py:29
-msgid "content types"
-msgstr "innehållstyper"
-
-#: contrib/sessions/models.py:35
-msgid "session key"
-msgstr "sessionsnyckel"
-
-#: contrib/sessions/models.py:36
-msgid "session data"
-msgstr "sessionsdata"
-
-#: contrib/sessions/models.py:37
-msgid "expire date"
-msgstr "utgångsdatum"
-
-#: contrib/sessions/models.py:41
-msgid "session"
-msgstr "session"
-
-#: contrib/sessions/models.py:42
-msgid "sessions"
-msgstr "sessioner"
-
-#: contrib/sites/models.py:10
-msgid "domain name"
-msgstr "domännamn"
-
-#: contrib/sites/models.py:11
-msgid "display name"
-msgstr "visat namn"
-
-#: contrib/sites/models.py:15
-msgid "site"
-msgstr "hemsida"
-
-#: contrib/sites/models.py:16
-msgid "sites"
-msgstr "hemsidor"
-
-#: utils/translation.py:360
-msgid "DATE_FORMAT"
-msgstr "Y-m-d"
-
-#: utils/translation.py:361
-msgid "DATETIME_FORMAT"
-msgstr "Y-m-d, H:i"
-
-#: utils/translation.py:362
-msgid "TIME_FORMAT"
-msgstr "H:i:s"
+#: contrib/localflavor/usa/forms.py:17
+msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
+msgstr "Fyll i zipkod i formatet XXXXX eller XXXXX-XXXX."
#: utils/dates.py:6
msgid "Monday"
-msgstr "måndag"
+msgstr "Måndag"
#: utils/dates.py:6
msgid "Tuesday"
-msgstr "tisdag"
+msgstr "Tisdag"
#: utils/dates.py:6
msgid "Wednesday"
-msgstr "onsdag"
+msgstr "Onsdag"
#: utils/dates.py:6
msgid "Thursday"
-msgstr "torsdag"
+msgstr "Torsdag"
#: utils/dates.py:6
msgid "Friday"
-msgstr "fredag"
+msgstr "Fredag"
#: utils/dates.py:7
msgid "Saturday"
-msgstr "lördag"
+msgstr "Lördag"
#: utils/dates.py:7
msgid "Sunday"
-msgstr "söndag"
+msgstr "Söndag"
#: utils/dates.py:14
msgid "January"
-msgstr "januari"
+msgstr "Januari"
#: utils/dates.py:14
msgid "February"
-msgstr "februari"
+msgstr "Februari"
#: utils/dates.py:14 utils/dates.py:27
msgid "March"
-msgstr "mars"
+msgstr "Mars"
#: utils/dates.py:14 utils/dates.py:27
msgid "April"
-msgstr "april"
+msgstr "April"
#: utils/dates.py:14 utils/dates.py:27
msgid "May"
-msgstr "maj"
+msgstr "Maj"
#: utils/dates.py:14 utils/dates.py:27
msgid "June"
-msgstr "juni"
+msgstr "Juni"
#: utils/dates.py:15 utils/dates.py:27
msgid "July"
-msgstr "juli"
+msgstr "Juli"
#: utils/dates.py:15
msgid "August"
-msgstr "augusti"
+msgstr "Augusti"
#: utils/dates.py:15
msgid "September"
-msgstr "september"
+msgstr "September"
#: utils/dates.py:15
msgid "October"
-msgstr "oktober"
+msgstr "Oktober"
#: utils/dates.py:15
msgid "November"
-msgstr "november"
+msgstr "November"
#: utils/dates.py:16
msgid "December"
msgstr "december"
#: utils/dates.py:19
-#, fuzzy
msgid "jan"
-msgstr "och"
+msgstr "jan"
#: utils/dates.py:19
msgid "feb"
-msgstr ""
+msgstr "feb"
#: utils/dates.py:19
msgid "mar"
-msgstr ""
+msgstr "mars"
#: utils/dates.py:19
msgid "apr"
-msgstr ""
+msgstr "apr"
#: utils/dates.py:19
-#, fuzzy
msgid "may"
-msgstr "dag"
+msgstr "maj"
#: utils/dates.py:19
msgid "jun"
-msgstr ""
+msgstr "juni"
#: utils/dates.py:20
msgid "jul"
-msgstr ""
+msgstr "juli"
#: utils/dates.py:20
msgid "aug"
-msgstr ""
+msgstr "aug"
#: utils/dates.py:20
msgid "sep"
-msgstr ""
+msgstr "sept"
#: utils/dates.py:20
msgid "oct"
-msgstr ""
+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."
@@ -1508,8 +2297,8 @@ msgstr[1] "månader"
#: utils/timesince.py:14
msgid "week"
msgid_plural "weeks"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "vecka"
+msgstr[1] "veckor"
#: utils/timesince.py:15
msgid "day"
@@ -1529,500 +2318,27 @@ msgid_plural "minutes"
msgstr[0] "minut"
msgstr[1] "minuter"
-#: conf/global_settings.py:37
-msgid "Bengali"
-msgstr "Bengaliska"
-
-#: conf/global_settings.py:38
-msgid "Czech"
-msgstr "Tjeckiska"
-
-#: conf/global_settings.py:39
-msgid "Welsh"
-msgstr "Walesiska"
-
-#: conf/global_settings.py:40
-msgid "Danish"
-msgstr "Danska"
-
-#: conf/global_settings.py:41
-msgid "German"
-msgstr "Tyska"
-
-#: conf/global_settings.py:42
-msgid "Greek"
-msgstr ""
-
-#: conf/global_settings.py:43
-msgid "English"
-msgstr "Engelska"
-
-#: conf/global_settings.py:44
-msgid "Spanish"
-msgstr "Spanska"
-
-#: conf/global_settings.py:45
-msgid "French"
-msgstr "Franska"
-
-#: conf/global_settings.py:46
-msgid "Galician"
-msgstr "Galisiska"
-
-#: conf/global_settings.py:47
-msgid "Hungarian"
-msgstr ""
-
-#: conf/global_settings.py:48
-msgid "Hebrew"
-msgstr ""
-
-#: conf/global_settings.py:49
-msgid "Icelandic"
-msgstr "Isländska"
-
-#: conf/global_settings.py:50
-msgid "Italian"
-msgstr "Italienska"
-
-#: conf/global_settings.py:51
-msgid "Japanese"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Dutch"
-msgstr ""
-
-#: conf/global_settings.py:53
-msgid "Norwegian"
-msgstr "Norska"
-
-#: conf/global_settings.py:54
-msgid "Brazilian"
-msgstr "Brasilianska"
-
-#: conf/global_settings.py:55
-msgid "Romanian"
-msgstr "Rumänska"
-
-#: conf/global_settings.py:56
-msgid "Russian"
-msgstr "Ryska"
-
-#: conf/global_settings.py:57
-msgid "Slovak"
-msgstr "Slovakiska"
-
-#: conf/global_settings.py:58
-#, fuzzy
-msgid "Slovenian"
-msgstr "Slovakiska"
-
-#: conf/global_settings.py:59
-msgid "Serbian"
-msgstr "Serbiska"
-
-#: conf/global_settings.py:60
-msgid "Swedish"
-msgstr "Svenska"
-
-#: conf/global_settings.py:61
-#, fuzzy
-msgid "Ukrainian"
-msgstr "Brasilianska"
-
-#: conf/global_settings.py:62
-msgid "Simplified Chinese"
-msgstr "Förenklad kinesiska"
-
-#: conf/global_settings.py:63
-msgid "Traditional Chinese"
-msgstr ""
-
-#: core/validators.py:60
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Det här värdet får bara innehålla bokstäver, tal och understräck."
-
-#: core/validators.py:64
-#, fuzzy
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"Det här värdet får bara innehålla bokstäver, tal, understräck och snedsträck"
-
-#: core/validators.py:72
-msgid "Uppercase letters are not allowed here."
-msgstr "Stora bokstäver är inte tillåtna här."
-
-#: core/validators.py:76
-msgid "Lowercase letters are not allowed here."
-msgstr "Små bokstäver är inte tillåtna här."
-
-#: core/validators.py:83
-msgid "Enter only digits separated by commas."
-msgstr "Fyll enbart i siffror avskillda med kommatecken."
-
-#: core/validators.py:95
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Fyll i giltiga e-postadresser avskillda med kommatecken."
-
-#: core/validators.py:99
-msgid "Please enter a valid IP address."
-msgstr "Var god fyll i ett giltigt IP-nummer."
-
-#: core/validators.py:103
-msgid "Empty values are not allowed here."
-msgstr "Tomma värden är inte tillåtna här."
-
-#: core/validators.py:107
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Icke-numeriska tecken är inte tillåtna här."
-
-#: core/validators.py:111
-msgid "This value can't be comprised solely of digits."
-msgstr "Det här värdet kan inte enbart bestå av siffror."
-
-#: core/validators.py:116
-msgid "Enter a whole number."
-msgstr "Fyll i ett heltal."
-
-#: core/validators.py:120
-msgid "Only alphabetical characters are allowed here."
-msgstr "Endast alfabetiska bokstäver är tillåtna här."
-
-#: core/validators.py:124
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Fyll i ett giltigt datum i formatet ÅÅÅÅ-MM-DD."
-
-#: core/validators.py:128
-msgid "Enter a valid time in HH:MM format."
-msgstr "Fyll i en giltig tid i formatet TT: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 "Fyll i en giltig tidpunkt i formatet ÅÅÅÅ-MM-DD TT:MM"
-
-#: core/validators.py:136
-msgid "Enter a valid e-mail address."
-msgstr "Fyll i en giltig e-postadress."
-
-#: core/validators.py:148
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Ladda upp en giltig bild. Filen du laddade upp var antingen inte en bild, "
-"eller så var det en korrupt bild."
-
-#: core/validators.py:155
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "Adressen %s pekar inte till en giltig bild."
-
-#: core/validators.py:159
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-"Telefonnummer måste vara i det amerikanska formatet XXX-XXX-XXXX. \"%s\" är "
-"ogiltigt."
-
-#: core/validators.py:167
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "Adressen %s pekar inte till en giltig QuickTime-video."
-
-#: core/validators.py:171
-msgid "A valid URL is required."
-msgstr "En giltig adress krävs."
-
-#: core/validators.py:185
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"Giltig HTML krävs. Specifika fel är:\n"
-"%s"
-
-#: core/validators.py:192
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "Missformad XML: %s"
-
-#: core/validators.py:202
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "Felaktig URL: %s"
-
-#: core/validators.py:206 core/validators.py:208
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "URL:en %s är en trasig länk."
-
-#: core/validators.py:214
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Fyll i en giltig förkortning för en amerikansk delstat"
-
-#: 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] "Håll i tungan! Ordet %s är inte tillåtet här."
-msgstr[1] "Håll i tungan! Orden %s är inte tillåtna här."
-
-#: core/validators.py:236
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Det här fältet måste matcha fältet '%s'."
-
-#: core/validators.py:255
-msgid "Please enter something for at least one field."
-msgstr "Fyll i något i minst ett fält."
-
-#: core/validators.py:264 core/validators.py:275
-msgid "Please enter both fields or leave them both empty."
-msgstr "Fyll antingen i båda fälten, eller lämna båda tomma"
-
-#: core/validators.py:282
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Det är fältet måste anges om %(field)s är %(value)s"
-
-#: core/validators.py:294
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Det här fältet måste anges om %(field)s inte är %(value)s"
-
-#: core/validators.py:313
-msgid "Duplicate values are not allowed."
-msgstr "Upprepade värden är inte tillåtna."
-
-#: core/validators.py:336
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Det här värdet måste vara en multipel av %s."
-
-#: core/validators.py:347
-msgid "Please enter a valid decimal number."
-msgstr "Fyll i ett giltigt decimaltal."
-
-#: 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] "Fyll i ett giltigt decimaltal med mindre än %s siffra totalt."
-msgstr[1] "Fyll i ett giltigt decimaltal med mindre än %s siffror totalt."
-
-#: 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] "Fyll i ett giltigt decimaltal med som mest %s decimalsiffra."
-msgstr[1] "Fyll i ett giltigt decimaltal med som mest %s decimalsiffror."
-
-#: core/validators.py:362
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Se till att filen du laddade upp är minst %s bytes stor."
-
-#: core/validators.py:363
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Se till att filen du laddade upp är max %s bytes stor."
-
-#: core/validators.py:376
-msgid "The format for this field is wrong."
-msgstr "Formatet på det här fältet är fel."
-
-#: core/validators.py:391
-msgid "This field is invalid."
-msgstr "Det här fältet är ogiltigt."
-
-#: core/validators.py:426
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Kunde inte hämta något från %s."
-
-#: core/validators.py:429
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-"Adressen %(url)s returnerade det ogiltiga innehållstyphuvudet (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 ""
-"Var god avsluta den oavslutade taggen %(tag)s på rad %(line)s. (Raden börjar "
-"med \"%(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 ""
-"En del text från rad %(line)s är inte tillåtet i det sammanhanget. (Raden "
-"börjar med \"%(start)s\".)"
-
-#: core/validators.py:471
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
+#: utils/translation/trans_real.py:362
+msgid "DATE_FORMAT"
msgstr ""
-"\"%(attr)s\" på rad %(line)s är inte ett gilltigt attribut. (Raden startar "
-"med \"%(start)s\".)"
-#: core/validators.py:476
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
+#: utils/translation/trans_real.py:363
+msgid "DATETIME_FORMAT"
msgstr ""
-"\"<%(tag)s>\" på rad %(line)s är inte en giltig tagg. (Raden börjar med \"%"
-"(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\".)"
+#: utils/translation/trans_real.py:364
+msgid "TIME_FORMAT"
msgstr ""
-"En tagg på rad %(line)s saknar en eller flera nödvändiga attribut. (Raden "
-"börjar med \"%(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\".)"
+#: utils/translation/trans_real.py:380
+msgid "YEAR_MONTH_FORMAT"
msgstr ""
-"Attributet \"%(attr)s\" på rad %(line)s har ett ogiltigt värde. (Raden "
-"börjar med \"%(start)s\".)"
-
-#: db/models/manipulators.py:302
-#, fuzzy, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(optname)s med det här %(fieldname)s finns redan."
-
-#: db/models/fields/__init__.py:40
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s med det här %(fieldname)s finns redan."
-
-#: 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 "Det här fältet är obligatoriskt."
-
-#: db/models/fields/__init__.py:337
-#, fuzzy
-msgid "This value must be an integer."
-msgstr "Det här värdet måste vara en multipel av %s."
-#: db/models/fields/__init__.py:369
-#, fuzzy
-msgid "This value must be either True or False."
-msgstr "Det här värdet måste vara en multipel av %s."
-
-#: db/models/fields/__init__.py:385
-#, fuzzy
-msgid "This field cannot be null."
-msgstr "Det här fältet är ogiltigt."
-
-#: db/models/fields/__init__.py:562
-msgid "Enter a valid filename."
-msgstr "Fyll i ett giltigt filnamn."
-
-#: db/models/fields/related.py:43
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Var god fyll i ett giltigt %s."
-
-#: db/models/fields/related.py:579
-#, fuzzy
-msgid "Separate multiple IDs with commas."
-msgstr " Separera flera ID:n med kommatecken."
-
-#: db/models/fields/related.py:581
-#, fuzzy
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+#: utils/translation/trans_real.py:381
+msgid "MONTH_DAY_FORMAT"
msgstr ""
-" Håll ner \"Control\", eller \"Command\" på en Mac, för att välja mer än 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."
-msgstr[0] "Var god och fyll giltiga %(self)s ID. Värdet %(value)r är ogiltigt."
-msgstr[1] ""
-"Var god och fyll giltiga %(self)s ID. Värdena %(value)r är ogiltigt."
-#: 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] "Se till att din text är kortare än %s tecken."
-msgstr[1] "Se till att din text är kortare än %s tecken."
-
-#: forms/__init__.py:385
-msgid "Line breaks are not allowed here."
-msgstr "Radbrytningar är inte tillåtna här."
-
-#: 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 "Välj ett giltigt alternativ. '%(data)s' finns inte bland %(choices)s"
-
-#: forms/__init__.py:645
-msgid "The submitted file is empty."
-msgstr "Den insända filen är tom."
-
-#: forms/__init__.py:699
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Fyll i ett heltal mellan -32 768 och 32 767."
-
-#: forms/__init__.py:708
-msgid "Enter a positive number."
-msgstr "Fyll i ett positivt heltal."
-
-#: forms/__init__.py:717
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Fyll i ett heltal mellan 0 och 32 767."
-
-#: template/defaultfilters.py:379
+#: template/defaultfilters.py:490
msgid "yes,no,maybe"
msgstr "ja,nej,kanske"
-#~ msgid "Comment"
-#~ msgstr "Kommentar"
-
-#~ msgid "Comments"
-#~ msgstr "Kommentarer"
-
-#~ msgid "String (up to 50)"
-#~ msgstr "Sträng (upp till 50)"
-
-#~ msgid "label"
-#~ msgstr "etikett"
-
-#~ msgid "package"
-#~ msgstr "paket"
-
-#~ msgid "packages"
-#~ msgstr "paket"
-
-#, fuzzy
-#~ msgid "count"
-#~ msgstr "innehåll"
diff --git a/django/conf/locale/sv/LC_MESSAGES/djangojs.mo b/django/conf/locale/sv/LC_MESSAGES/djangojs.mo
index c73aa30560..5daac63424 100644
--- a/django/conf/locale/sv/LC_MESSAGES/djangojs.mo
+++ b/django/conf/locale/sv/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/django/conf/locale/sv/LC_MESSAGES/djangojs.po b/django/conf/locale/sv/LC_MESSAGES/djangojs.po
index 4d0c1e9034..5abc8780d5 100644
--- a/django/conf/locale/sv/LC_MESSAGES/djangojs.po
+++ b/django/conf/locale/sv/LC_MESSAGES/djangojs.po
@@ -1,112 +1,125 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# Swedish translation of Django
+# Copyright (C) 2005
+# This file is distributed under the same license as the Django package.
#
+#
+# Robin Sonefors <ozamosi@blinkenlights.se>, 2005.
+# Mikko Hellsing <mikko@sorl.net>, 2007.
msgid ""
msgstr ""
-"Project-Id-Version: Django\n"
+"Project-Id-Version: djangojs\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-12-09 11:51+0100\n"
-"PO-Revision-Date: 2005-12-04 14:12+0100\n"
-"Last-Translator: Robin Sonefors <ozamosi@blinkenlights.se>\n"
-"Language-Team: Django Translators <Django-I18N@googlegroups.com>\n"
+"POT-Creation-Date: 2007-03-06 02:29+0100\n"
+"PO-Revision-Date: 2007-03-06 10:30+0100\n"
+"Last-Translator: Mikko Hellsing <mikko@sorl.net>\n"
+"Language-Team: Django I18N <Django-I18N@googlegroups.com>\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"
-"Plural-Forms: nplurals=2; plural=n != 1\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-Language: Swedish\n"
"X-Poedit-Country: SWEDEN\n"
#: contrib/admin/media/js/SelectFilter2.js:33
#, perl-format
msgid "Available %s"
-msgstr ""
+msgstr "Tillgänglig %s"
#: contrib/admin/media/js/SelectFilter2.js:41
-#, fuzzy
msgid "Choose all"
-msgstr "Välj en tidpunkt"
+msgstr "Välj alla"
#: contrib/admin/media/js/SelectFilter2.js:46
msgid "Add"
-msgstr ""
+msgstr "Lägg till"
#: contrib/admin/media/js/SelectFilter2.js:48
msgid "Remove"
-msgstr ""
+msgstr "Ta bort"
#: contrib/admin/media/js/SelectFilter2.js:53
#, perl-format
msgid "Chosen %s"
-msgstr ""
+msgstr "Vald %s"
#: contrib/admin/media/js/SelectFilter2.js:54
msgid "Select your choice(s) and click "
-msgstr ""
+msgstr "Gör dina val och klicka på "
#: contrib/admin/media/js/SelectFilter2.js:59
msgid "Clear all"
-msgstr ""
+msgstr "Ta bort alla"
-#: 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 "
"December"
msgstr ""
+"Januari Februari Mars April Maj Juni Juli Augusti September Oktober 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 ""
+msgstr "Söndag Mondag Tisdag Onsdag Torsdag Fredag Lördag"
#: contrib/admin/media/js/calendar.js:25
msgid "S M T W T F S"
-msgstr ""
+msgstr "S M T O T F L"
+
+#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
+#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
+msgid "Show"
+msgstr "Visa"
+
+#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
+msgid "Hide"
+msgstr "Göm"
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
msgid "Now"
msgstr "Nu"
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
msgid "Clock"
msgstr "Klocka"
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
msgid "Choose a time"
msgstr "Välj en tidpunkt"
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
msgid "Midnight"
msgstr "Midnatt"
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
msgid "6 a.m."
msgstr "06.00"
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
msgid "Noon"
msgstr "Mitt på dagen"
-#: 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 "Ångra"
+msgstr "Avbryt"
-#: 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 "Idag"
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
msgid "Calendar"
msgstr "Kalender"
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
msgid "Yesterday"
msgstr "Igår"
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
msgid "Tomorrow"
msgstr "Imorgon"
+
diff --git a/django/conf/locale/te/LC_MESSAGES/django.mo b/django/conf/locale/te/LC_MESSAGES/django.mo
new file mode 100644
index 0000000000..29360bb660
--- /dev/null
+++ b/django/conf/locale/te/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/te/LC_MESSAGES/django.po b/django/conf/locale/te/LC_MESSAGES/django.po
new file mode 100644
index 0000000000..0057bf97de
--- /dev/null
+++ b/django/conf/locale/te/LC_MESSAGES/django.po
@@ -0,0 +1,2106 @@
+# translation of django.po to Telugu
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# pavithran <pavithran.s@gmail.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-09-25 15:43+0200\n"
+"PO-Revision-Date: 2007-02-28 18:35+0530\n"
+"Last-Translator: pavithran <pavithran.s@gmail.com>\n"
+"Language-Team: Telugu <indlinux-telugu@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: contrib/comments/models.py:67 contrib/comments/models.py:166
+msgid "object ID"
+msgstr "వస్తువు ఐడి"
+
+#: contrib/comments/models.py:68
+msgid "headline"
+msgstr "ముఖ్య అంశం"
+
+#: contrib/comments/models.py:69 contrib/comments/models.py:90
+#: contrib/comments/models.py:167
+msgid "comment"
+msgstr "వ్యాఖ్యానము"
+
+#: contrib/comments/models.py:70
+msgid "rating #1"
+msgstr "రేటింగ్ #1"
+
+#: contrib/comments/models.py:71
+msgid "rating #2"
+msgstr "రేటింగ్ #2"
+
+#: contrib/comments/models.py:72
+msgid "rating #3"
+msgstr "రేటింగ్ #3"
+
+#: contrib/comments/models.py:73
+msgid "rating #4"
+msgstr "రేటింగ్ #4"
+
+#: contrib/comments/models.py:74
+msgid "rating #5"
+msgstr "రేటింగ్ #5"
+
+#: contrib/comments/models.py:75
+msgid "rating #6"
+msgstr "రేటింగ్ #6"
+
+#: contrib/comments/models.py:76
+msgid "rating #7"
+msgstr "రేటింగ్ #7"
+
+#: contrib/comments/models.py:77
+msgid "rating #8"
+msgstr "రేటింగ్ #8"
+
+#: contrib/comments/models.py:82
+msgid "is valid rating"
+msgstr "సరైన రేటింగ్"
+
+#: contrib/comments/models.py:83 contrib/comments/models.py:169
+msgid "date/time submitted"
+msgstr "తేది /వేళ సమర్పించినది"
+
+#: contrib/comments/models.py:84 contrib/comments/models.py:170
+msgid "is public"
+msgstr "బహిరంగమయినది"
+
+#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304
+msgid "IP address"
+msgstr "ఐపి అడ్రస్"
+
+#: contrib/comments/models.py:86
+msgid "is removed"
+msgstr "తీసివేయబడినది"
+
+#: contrib/comments/models.py:86
+msgid ""
+"Check this box if the comment is inappropriate. A \"This comment has been "
+"removed\" message will be displayed instead."
+msgstr " ఈ వ్యాఖ్యానము సరిగ్గా లేదని తోచినచో ఈ డబ్బా ని చెక్ చేయండి "
+
+#: contrib/comments/models.py:91
+msgid "comments"
+msgstr "వ్యాఖ్యానములు"
+
+#: contrib/comments/models.py:131 contrib/comments/models.py:207
+msgid "Content object"
+msgstr "వస్తువు లోనిది"
+
+#: contrib/comments/models.py:159
+#, python-format
+msgid ""
+"Posted by %(user)s at %(date)s\n"
+"\n"
+"%(comment)s\n"
+"\n"
+"http://%(domain)s%(url)s"
+msgstr ""
+
+#: contrib/comments/models.py:168
+msgid "person's name"
+msgstr "వ్యక్తి పేరు"
+
+#: contrib/comments/models.py:171
+msgid "ip address"
+msgstr "ఐపి అడ్రస్"
+
+#: contrib/comments/models.py:173
+msgid "approved by staff"
+msgstr " అధికారుల చేత ఆమోదించబడినది"
+
+#: contrib/comments/models.py:176
+msgid "free comment"
+msgstr "నిరాటంకమైన వ్యాఖ్యానము"
+
+#: contrib/comments/models.py:177
+msgid "free comments"
+msgstr "నిరాటంకము గావ్యాఖ్యానములు"
+
+#: contrib/comments/models.py:233
+msgid "score"
+msgstr "స్కొర్"
+
+#: contrib/comments/models.py:234
+msgid "score date"
+msgstr "స్కొర్ తేది"
+
+#: contrib/comments/models.py:237
+msgid "karma score"
+msgstr "కర్మ స్కొర్"
+
+#: contrib/comments/models.py:238
+msgid "karma scores"
+msgstr "కర్మ స్కొరులు"
+
+#: contrib/comments/models.py:242
+#, python-format
+msgid "%(score)d rating by %(user)s"
+msgstr "%(user) రేటింగ్"
+
+#: contrib/comments/models.py:258
+#, python-format
+msgid ""
+"This comment was flagged by %(user)s:\n"
+"\n"
+"%(text)s"
+msgstr ""
+"%(user)s చేత చేయబడ్డ వ్యాఖ్యానములు"
+"\n"
+"%(text)లు"
+
+#: contrib/comments/models.py:265
+msgid "flag date"
+msgstr "ఫ్లాగ్ తేది "
+
+#: contrib/comments/models.py:268
+msgid "user flag"
+msgstr "యూఙర్ ఫ్లాగ్"
+
+#: contrib/comments/models.py:269
+msgid "user flags"
+msgstr "యూఙర్ ఫ్లాగులు"
+
+#: contrib/comments/models.py:273
+#, python-format
+msgid "Flag by %r"
+msgstr "%r యొక్క ఫ్లాగ్"
+
+#: contrib/comments/models.py:278
+msgid "deletion date"
+msgstr "తీసివేసిన తారీఖు"
+
+#: contrib/comments/models.py:280
+msgid "moderator deletion"
+msgstr "మొదరేటర్ చేత తీసివేయబడినది "
+
+#: contrib/comments/models.py:281
+msgid "moderator deletions"
+msgstr "మొదరేటర్ చేత తీసివేయబడినవి"
+
+#: contrib/comments/models.py:285
+#, python-format
+msgid "Moderator deletion by %r"
+msgstr "మొదరేటర్ తీసివేసిన %r"
+
+#: contrib/comments/views/karma.py:19
+msgid "Anonymous users cannot vote"
+msgstr "అపరిచిత యూఙరులు వోటు వేయలేరు"
+
+#: contrib/comments/views/karma.py:23
+msgid "Invalid comment ID"
+msgstr "సరికాని వ్యాఖ్యానము ఐడి"
+
+#: contrib/comments/views/karma.py:25
+msgid "No voting for yourself"
+msgstr "మీకు వోటు హక్కు లేదు"
+
+#: contrib/comments/views/comments.py:27
+msgid "This rating is required because you've entered at least one other rating."
+msgstr "ఈ రేటింగ్ అవసరం ఎం దుకంటే మీరు ఒక్కసారైన రేటింగ్ ఇచ్చారు"
+
+#: contrib/comments/views/comments.py:111
+#, python-format
+msgid ""
+"This comment was posted by a user who has posted fewer than %(count)s "
+"comment:\n"
+"\n"
+"%(text)s"
+msgid_plural ""
+"This comment was posted by a user who has posted fewer than %(count)s "
+"comments:\n"
+"\n"
+"%(text)s"
+msgstr[0] ""
+"ఈ వ్యాఖ్యానము చేసిన యూఙర్ %(count)లు కన్న తక్కువ సమర్పించాడు "
+"వ్యాఖ్యానము:\n"
+"\n"
+"%(text)s"
+msgstr[1] ""
+"ఈ వ్యాఖ్యానము చేసిన యూఙర్ %(count)లు కన్న తక్కువ సమర్పించాడు"
+"వ్యాఖ్యానములు:\n"
+"\n"
+"%(text)s"
+
+#: contrib/comments/views/comments.py:116
+#, python-format
+msgid ""
+"This comment was posted by a sketchy user:\n"
+"\n"
+"%(text)s"
+msgstr ""
+"ఈ వ్యాఖ్యానము స్కెచి యూఙర్ చేసాడు :\n"
+"\n"
+"%(text)s"
+
+#: contrib/comments/views/comments.py:188
+#: contrib/comments/views/comments.py:280
+msgid "Only POSTs are allowed"
+msgstr "ఇక్కడ సమర్పణలు మాత్రమే అంగీకరిస్తాము"
+
+#: contrib/comments/views/comments.py:192
+#: contrib/comments/views/comments.py:284
+msgid "One or more of the required fields wasn't submitted"
+msgstr "ఒకటి కాని ,అంత కన్నఎక్కువ ఫీల్డస్ సమర్పించలేదు"
+
+#: contrib/comments/views/comments.py:196
+#: contrib/comments/views/comments.py:286
+msgid "Somebody tampered with the comment form (security violation)"
+msgstr "ఎవరో వ్యాఖ్యానము ఫార్మ్ ని గెలికారు (భద్రత కి భంగం) "
+
+#: contrib/comments/views/comments.py:206
+#: contrib/comments/views/comments.py:292
+msgid ""
+"The comment form had an invalid 'target' parameter -- the object ID was "
+"invalid"
+msgstr ""
+"వ్యాఖ్యానము ఫార్మ్ లో చెల్లని 'టార్గెట్ ' పారామీటర్ , ఆ వస్తువు ఐడి "
+"చెల్లదు"
+
+#: contrib/comments/views/comments.py:257
+#: contrib/comments/views/comments.py:321
+msgid "The comment form didn't provide either 'preview' or 'post'"
+msgstr "వ్యాఖ్యానము ఫార్మ్ లో 'ప్రివ్యీవ్' కాని 'పోస్ట్' ఇవ్వలేదు "
+
+#: contrib/comments/templates/comments/form.html:6
+#: contrib/comments/templates/comments/form.html:8
+#: contrib/admin/templates/admin/login.html:17
+msgid "Username:"
+msgstr "యూఙర్ పేరు"
+
+#: contrib/comments/templates/comments/form.html:6
+#: contrib/admin/templates/admin/object_history.html:3
+#: contrib/admin/templates/admin/change_list.html:5
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
+#: contrib/admin/templates/admin_doc/bookmarklets.html:4
+#: contrib/admin/templates/admin_doc/view_detail.html:4
+#: contrib/admin/templates/admin_doc/template_tag_index.html:5
+#: contrib/admin/templates/admin_doc/template_detail.html:4
+#: contrib/admin/templates/admin_doc/template_filter_index.html:5
+#: contrib/admin/templates/admin_doc/missing_docutils.html:4
+#: contrib/admin/templates/admin_doc/view_index.html:5
+#: contrib/admin/templates/admin_doc/model_detail.html:3
+#: contrib/admin/templates/admin_doc/index.html:4
+#: contrib/admin/templates/admin_doc/model_index.html:5
+msgid "Log out"
+msgstr "లాగ్ ఔట్"
+
+#: contrib/comments/templates/comments/form.html:8
+#: contrib/admin/templates/admin/login.html:20
+msgid "Password:"
+msgstr "పాస్ వర్డ్"
+
+#: contrib/comments/templates/comments/form.html:8
+msgid "Forgotten your password?"
+msgstr "పాస్ వర్డ్ మర్చిపోయారా?"
+
+#: contrib/comments/templates/comments/form.html:12
+msgid "Ratings"
+msgstr "రేటింగులు"
+
+#: contrib/comments/templates/comments/form.html:12
+#: contrib/comments/templates/comments/form.html:23
+msgid "Required"
+msgstr "అవసరము"
+
+#: contrib/comments/templates/comments/form.html:12
+#: contrib/comments/templates/comments/form.html:23
+msgid "Optional"
+msgstr "మీ ఇష్టం"
+
+#: contrib/comments/templates/comments/form.html:23
+msgid "Post a photo"
+msgstr "ఫొటొ పెట్టండి"
+
+#: contrib/comments/templates/comments/form.html:28
+#: contrib/comments/templates/comments/freeform.html:5
+msgid "Comment:"
+msgstr "వ్యాఖ్యానము"
+
+#: contrib/comments/templates/comments/form.html:35
+#: contrib/comments/templates/comments/freeform.html:10
+msgid "Preview comment"
+msgstr "వ్యాఖ్యానము ని ప్రివ్యీవ్ చేయండి"
+
+#: contrib/comments/templates/comments/freeform.html:4
+msgid "Your name:"
+msgstr "మీ పేరు"
+
+#: contrib/admin/filterspecs.py:40
+#, python-format
+msgid ""
+"<h3>By %s:</h3>\n"
+"<ul>\n"
+msgstr "<h3> %s తో:</h3>\n"
+"<ul>\n"
+
+#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
+#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169
+msgid "All"
+msgstr "అన్నీ"
+
+#: contrib/admin/filterspecs.py:109
+msgid "Any date"
+msgstr "ఏ రోఙైన"
+
+#: contrib/admin/filterspecs.py:110
+msgid "Today"
+msgstr "ఈ రోఙు"
+
+#: contrib/admin/filterspecs.py:113
+msgid "Past 7 days"
+msgstr "గత 7 రోఙుల గా"
+
+#: contrib/admin/filterspecs.py:115
+msgid "This month"
+msgstr "ఈ నెల"
+
+#: contrib/admin/filterspecs.py:117
+msgid "This year"
+msgstr "ఈ సంవత్సరము"
+
+#: contrib/admin/filterspecs.py:143
+msgid "Yes"
+msgstr "అవును"
+
+#: contrib/admin/filterspecs.py:143
+msgid "No"
+msgstr "కాదు"
+
+#: contrib/admin/filterspecs.py:150
+msgid "Unknown"
+msgstr "తెలియనది"
+
+#: contrib/admin/models.py:16
+msgid "action time"
+msgstr "పని సమయము "
+
+#: contrib/admin/models.py:19
+msgid "object id"
+msgstr "వస్తువు"
+
+#: contrib/admin/models.py:20
+msgid "object repr"
+msgstr "వస్తువు"
+
+#: contrib/admin/models.py:21
+msgid "action flag"
+msgstr "పని ఫ్లాగ్"
+
+#: contrib/admin/models.py:22
+msgid "change message"
+msgstr "సందేశము ని మార్చంది"
+
+#: contrib/admin/models.py:25
+msgid "log entry"
+msgstr "లాగ్ ఎంట్రీ"
+
+#: contrib/admin/models.py:26
+msgid "log entries"
+msgstr "లాగ్ ఎంట్రీలు"
+
+#: contrib/admin/templatetags/admin_list.py:230
+msgid "All dates"
+msgstr "అన్నీ రోఙులు"
+
+#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:59
+msgid ""
+"Please enter a correct username and password. Note that both fields are case-"
+"sensitive."
+msgstr "దయచేసి సరైన యూఙర్ పేరు పాస్ వర్డ్ ఇవ్వండి"
+
+#: contrib/admin/views/decorators.py:24
+#: contrib/admin/templates/admin/login.html:25
+msgid "Log in"
+msgstr "లాగ్ ఇన్"
+
+#: contrib/admin/views/decorators.py:62
+msgid ""
+"Please log in again, because your session has expired. Don't worry: Your "
+"submission has been saved."
+msgstr "దయచేసి మళీ లాగ్ ఇన్ అవ్వండి ఎందుకంటే మీ సేస్సన్ ముగిసింది . బాధపడకండి మీ సమర్పన దాచిపెట్టాము"
+
+#: contrib/admin/views/decorators.py:69
+msgid ""
+"Looks like your browser isn't configured to accept cookies. Please enable "
+"cookies, reload this page, and try again."
+msgstr "మీ బ్రౌఙర్ పై కుకీస్ అంగీకరించబడేటట్లు చేయలేదు . దయ చేసి కుకీస్ ఎనేబల్ చేసి ,మళ్ళీ ట్రై చేయండి"
+
+#: contrib/admin/views/decorators.py:83
+msgid "Usernames cannot contain the '@' character."
+msgstr "యూఙర్ పేరు లో '@' అక్షరము ఉందకూడడు"
+
+#: contrib/admin/views/decorators.py:85
+#, python-format
+msgid "Your e-mail address is not your username. Try '%s' instead."
+msgstr "మీ ఈ మెయిల్ అడ్రస్ మీ యూఙర్ పేరు కాదు . '%s' ఇచ్చి చూడండి "
+
+#: contrib/admin/views/main.py:223
+msgid "Site administration"
+msgstr "సైట్ నిర్వాహన"
+
+#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:17
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was added successfully."
+msgstr "%(name)s \"%(obj)s\"ఙయప్రదంగా కలపబడ్డడి"
+
+#: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347
+#: contrib/admin/views/auth.py:22
+msgid "You may edit it again below."
+msgstr "మీరు మళ్ళీ దీనినీ క్రింద మార్చవచ్చు"
+
+#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356
+#, python-format
+msgid "You may add another %s below."
+msgstr "మీరు ఇంకొక %s ని క్రింద ఙత చేయొచ్చు"
+
+#: contrib/admin/views/main.py:289
+#, python-format
+msgid "Add %s"
+msgstr "%s ని ఙత చేయండి "
+
+#: contrib/admin/views/main.py:335
+#, python-format
+msgid "Added %s."
+msgstr "%s కలపబడ్డడి"
+
+#: contrib/admin/views/main.py:335 contrib/admin/views/main.py:337
+#: contrib/admin/views/main.py:339
+msgid "and"
+msgstr "ఇంకా"
+
+#: contrib/admin/views/main.py:337
+#, python-format
+msgid "Changed %s."
+msgstr " %s మార్చబడిండి"
+
+#: contrib/admin/views/main.py:339
+#, python-format
+msgid "Deleted %s."
+msgstr "%s తీసివేయబడ్డడి"
+
+#: contrib/admin/views/main.py:342
+msgid "No fields changed."
+msgstr "మార్చబడలేదు"
+
+#: contrib/admin/views/main.py:345
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was changed successfully."
+msgstr "%(name)s \"%(obj)s\" ఙయప్రదంగా మార్చబడిండి"
+
+#: contrib/admin/views/main.py:353
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
+msgstr "%(name)s \"%(obj)s\" ఙయప్రదంగా కలపబడ్డడి .మీరు మళ్ళీ దీనినీ క్రింద మార్చవచ్చు"
+
+#: contrib/admin/views/main.py:391
+#, python-format
+msgid "Change %s"
+msgstr "%s ని మార్చంది"
+
+#: contrib/admin/views/main.py:473
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
+msgstr "ఒకటి కాని ,అంత కన్నఎక్కువ %(name)లు లో %(fieldname)లు : %(obj)లు "
+
+#: contrib/admin/views/main.py:478
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s:"
+msgstr "ఒకటి కాని ,అంత కన్నఎక్కువ %(name)లు లో %(fieldname)లు"
+
+#: contrib/admin/views/main.py:511
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr "%(name)లు \"%(obj)s\"ఙయప్రదంగా తీసివేయబడ్డడి"
+
+#: contrib/admin/views/main.py:514
+msgid "Are you sure?"
+msgstr "మీరు కచ్చితంగా ఉన్నారా?"
+
+#: contrib/admin/views/main.py:536
+#, python-format
+msgid "Change history: %s"
+msgstr "మార్చబడిన పురాణము"
+
+#: contrib/admin/views/main.py:570
+#, python-format
+msgid "Select %s"
+msgstr "%s ని ఎన్నుకోండి"
+
+#: contrib/admin/views/main.py:570
+#, python-format
+msgid "Select %s to change"
+msgstr "%s ని మార్చటానికి ఎన్నుకోండి"
+
+#: contrib/admin/views/main.py:758
+msgid "Database error"
+msgstr "డాటాబేస్ ఎర్రర్ "
+
+#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48
+#: contrib/admin/views/doc.py:50
+msgid "tag:"
+msgstr "టాగ్"
+
+#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79
+#: contrib/admin/views/doc.py:81
+msgid "filter:"
+msgstr "ఫిల్టర్"
+
+#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137
+#: contrib/admin/views/doc.py:139
+msgid "view:"
+msgstr "చూడు:"
+
+#: contrib/admin/views/doc.py:164
+#, python-format
+msgid "App %r not found"
+msgstr "%rఎప్ప్ దొరకలేడు"
+
+#: contrib/admin/views/doc.py:171
+#, python-format
+msgid "Model %r not found in app %r"
+msgstr "%r ఎప్ప్ లో %r మొడల్ దొరకలేడు"
+
+#: contrib/admin/views/doc.py:183
+#, python-format
+msgid "the related `%s.%s` object"
+msgstr "సంబంధించిన `%s.%s` వస్తువు "
+
+#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205
+#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224
+msgid "model:"
+msgstr "మొడల్:"
+
+#: contrib/admin/views/doc.py:214
+#, python-format
+msgid "related `%s.%s` objects"
+msgstr "సంబంధించిన `%s.%s` వస్తువులు"
+
+#: contrib/admin/views/doc.py:219
+#, python-format
+msgid "all %s"
+msgstr "ఆన్నీ %s"
+
+#: contrib/admin/views/doc.py:224
+#, python-format
+msgid "number of %s"
+msgstr ""
+
+#: contrib/admin/views/doc.py:229
+#, python-format
+msgid "Fields on %s objects"
+msgstr "వస్తువు"
+
+#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301
+#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309
+#: contrib/admin/views/doc.py:310 contrib/admin/views/doc.py:312
+msgid "Integer"
+msgstr "అంకె"
+
+#: contrib/admin/views/doc.py:292
+msgid "Boolean (Either True or False)"
+msgstr ""
+
+#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311
+#, python-format
+msgid "String (up to %(maxlength)s)"
+msgstr ""
+
+#: contrib/admin/views/doc.py:294
+msgid "Comma-separated integers"
+msgstr "కామా తో విడడీసిన సంఖ్య"
+
+#: contrib/admin/views/doc.py:295
+msgid "Date (without time)"
+msgstr "తేది (సమయం లేకుండా)"
+
+#: contrib/admin/views/doc.py:296
+msgid "Date (with time)"
+msgstr "తేది (సమయం తో)"
+
+#: contrib/admin/views/doc.py:297
+msgid "E-mail address"
+msgstr "ఈ మెయిల్ అడ్రస్ "
+
+#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299
+#: contrib/admin/views/doc.py:302
+msgid "File path"
+msgstr "ఫైల్ పాత్"
+
+#: contrib/admin/views/doc.py:300
+msgid "Decimal number"
+msgstr ""
+
+#: contrib/admin/views/doc.py:306
+msgid "Boolean (Either True, False or None)"
+msgstr ""
+
+#: contrib/admin/views/doc.py:307
+msgid "Relation to parent model"
+msgstr "పేరంట్ మొడల్ యొక్క రిలేషన్ "
+
+#: contrib/admin/views/doc.py:308
+msgid "Phone number"
+msgstr "ఫోన్ నంబరు"
+
+#: contrib/admin/views/doc.py:313
+msgid "Text"
+msgstr "టెక్స్ట"
+
+#: contrib/admin/views/doc.py:314
+msgid "Time"
+msgstr "వేళ"
+
+#: contrib/admin/views/doc.py:315 contrib/flatpages/models.py:7
+msgid "URL"
+msgstr ""
+
+#: contrib/admin/views/doc.py:316
+msgid "U.S. state (two uppercase letters)"
+msgstr "అమెరికా రాజ్యము"
+
+#: contrib/admin/views/doc.py:317
+msgid "XML text"
+msgstr "ఎక్స్ ఎమ్ ఎల్"
+
+#: contrib/admin/views/doc.py:343
+#, python-format
+msgid "%s does not appear to be a urlpattern object"
+msgstr ""
+
+#: contrib/admin/views/auth.py:28
+msgid "Add user"
+msgstr "యూఙర్"
+
+#: contrib/admin/templates/admin/object_history.html:3
+#: contrib/admin/templates/admin/change_list.html:5
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
+#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+msgid "Documentation"
+msgstr ""
+
+#: contrib/admin/templates/admin/object_history.html:3
+#: contrib/admin/templates/admin/change_list.html:5
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
+#: contrib/admin/templates/admin_doc/bookmarklets.html:4
+#: contrib/admin/templates/admin_doc/view_detail.html:4
+#: contrib/admin/templates/admin_doc/template_tag_index.html:5
+#: contrib/admin/templates/admin_doc/template_detail.html:4
+#: contrib/admin/templates/admin_doc/template_filter_index.html:5
+#: contrib/admin/templates/admin_doc/missing_docutils.html:4
+#: contrib/admin/templates/admin_doc/view_index.html:5
+#: contrib/admin/templates/admin_doc/model_detail.html:3
+#: contrib/admin/templates/admin_doc/index.html:4
+#: contrib/admin/templates/admin_doc/model_index.html:5
+msgid "Change password"
+msgstr "పాస్ వర్డ్ మార్చుకోండి"
+
+#: contrib/admin/templates/admin/object_history.html:5
+#: contrib/admin/templates/admin/500.html:4
+#: contrib/admin/templates/admin/change_list.html:6
+#: contrib/admin/templates/admin/base.html:30
+#: contrib/admin/templates/admin/delete_confirmation.html:6
+#: contrib/admin/templates/admin/change_form.html:13
+#: contrib/admin/templates/admin/invalid_setup.html:4
+#: contrib/admin/templates/registration/password_change_done.html:4
+#: contrib/admin/templates/registration/password_reset_form.html:4
+#: contrib/admin/templates/registration/logged_out.html:4
+#: contrib/admin/templates/registration/password_reset_done.html:4
+#: contrib/admin/templates/registration/password_change_form.html:4
+#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+msgid "Home"
+msgstr "ఇల్లు"
+
+#: contrib/admin/templates/admin/object_history.html:5
+#: contrib/admin/templates/admin/change_form.html:20
+msgid "History"
+msgstr "పురాణము"
+
+#: contrib/admin/templates/admin/object_history.html:18
+msgid "Date/time"
+msgstr "తేది/వేళ"
+
+#: contrib/admin/templates/admin/object_history.html:19
+msgid "User"
+msgstr "యూఙర్"
+
+#: contrib/admin/templates/admin/object_history.html:20
+msgid "Action"
+msgstr "పని"
+
+#: contrib/admin/templates/admin/object_history.html:26
+msgid "DATE_WITH_TIME_FULL"
+msgstr ""
+
+#: contrib/admin/templates/admin/object_history.html:36
+msgid ""
+"This object doesn't have a change history. It probably wasn't added via this "
+"admin site."
+msgstr ""
+
+#: contrib/admin/templates/admin/base_site.html:4
+msgid "Django site admin"
+msgstr "డ్ఙాంగొ యొక్క నిర్వాహనదారులు"
+
+#: contrib/admin/templates/admin/base_site.html:7
+msgid "Django administration"
+msgstr "డ్ఙాంగొ నిర్వాహన"
+
+#: contrib/admin/templates/admin/500.html:4
+msgid "Server error"
+msgstr "సర్వర్ తప్పు"
+
+#: contrib/admin/templates/admin/500.html:6
+msgid "Server error (500)"
+msgstr "సర్వర్ తప్పు (500)"
+
+#: contrib/admin/templates/admin/500.html:9
+msgid "Server Error <em>(500)</em>"
+msgstr "సర్వర్ తప్పు <em>(500)</em>"
+
+#: contrib/admin/templates/admin/500.html:10
+msgid ""
+"There's been an error. It's been reported to the site administrators via e-"
+"mail and should be fixed shortly. Thanks for your patience."
+msgstr "తప్పు ఙరిగిండి . దానిని నిర్వాహనాధికారులు కి ఈ మెయిల్ చేయబడ్డడి,మీ ఓపిక కి ధన్యవాదములు"
+
+#: contrib/admin/templates/admin/404.html:4
+#: contrib/admin/templates/admin/404.html:8
+msgid "Page not found"
+msgstr "పేఙి దొరకలేదు"
+
+#: contrib/admin/templates/admin/404.html:10
+msgid "We're sorry, but the requested page could not be found."
+msgstr "క్షమించండి మీరు కోరిన పేఙి దొరకలేడు"
+
+#: contrib/admin/templates/admin/index.html:17
+#, python-format
+msgid "Models available in the %(name)s application."
+msgstr "మొడల్ లు %(name)లో దొరికే అప్ప్లికేషన్"
+
+#: contrib/admin/templates/admin/index.html:18
+#, python-format
+msgid "%(name)s"
+msgstr ""
+
+#: contrib/admin/templates/admin/index.html:28
+#: contrib/admin/templates/admin/change_form.html:15
+msgid "Add"
+msgstr "ఙత చేయి"
+
+#: contrib/admin/templates/admin/index.html:34
+msgid "Change"
+msgstr "మార్చు"
+
+#: contrib/admin/templates/admin/index.html:44
+msgid "You don't have permission to edit anything."
+msgstr "మీకు ఏది మార్చటానికి అధికారము లేదు"
+
+#: contrib/admin/templates/admin/index.html:52
+msgid "Recent Actions"
+msgstr "ఈ మధ్య చేసిన పనులు"
+
+#: contrib/admin/templates/admin/index.html:53
+msgid "My Actions"
+msgstr "నా పనులు"
+
+#: contrib/admin/templates/admin/index.html:57
+msgid "None available"
+msgstr "ఏమి దొరకలేదు"
+
+#: contrib/admin/templates/admin/change_list.html:11
+#, python-format
+msgid "Add %(name)s"
+msgstr "%(name)లు ఙత చేయు"
+
+#: contrib/admin/templates/admin/login.html:22
+msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
+msgstr "మీరు<a href=\"/password_reset/\">పాస్ వర్డ మర్చిపోయారా? "
+
+#: contrib/admin/templates/admin/base.html:25
+msgid "Welcome,"
+msgstr "సుస్వాగతం"
+
+#: contrib/admin/templates/admin/delete_confirmation.html:9
+#: contrib/admin/templates/admin/submit_line.html:3
+msgid "Delete"
+msgstr "తీసివేయి"
+
+#: contrib/admin/templates/admin/delete_confirmation.html:14
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
+msgstr ""
+
+#: contrib/admin/templates/admin/delete_confirmation.html:21
+#, python-format
+msgid ""
+"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
+msgstr ""
+
+#: contrib/admin/templates/admin/delete_confirmation.html:26
+msgid "Yes, I'm sure"
+msgstr "అవును "
+
+#: contrib/admin/templates/admin/filter.html:2
+#, python-format
+msgid " By %(filter_title)s "
+msgstr ""
+
+#: contrib/admin/templates/admin/search_form.html:8
+msgid "Go"
+msgstr "వెళ్లు"
+
+#: contrib/admin/templates/admin/search_form.html:10
+#, python-format
+msgid "1 result"
+msgid_plural "%(counter)s results"
+msgstr[0] ""
+msgstr[1] ""
+
+#: contrib/admin/templates/admin/search_form.html:10
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr ""
+
+#: contrib/admin/templates/admin/pagination.html:10
+msgid "Show all"
+msgstr "అన్నీ చూడండి"
+
+#: contrib/admin/templates/admin/filters.html:4
+msgid "Filter"
+msgstr ""
+
+#: contrib/admin/templates/admin/change_form.html:21
+msgid "View on site"
+msgstr "సైట్ లో చూడండి"
+
+#: contrib/admin/templates/admin/change_form.html:30
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "క్రింద ఉన్న తప్పు సరిదిద్దుకోండి"
+msgstr[1] "క్రింద ఉన్న తప్పులు సరిదిద్దుకోండి"
+
+#: contrib/admin/templates/admin/change_form.html:48
+msgid "Ordering"
+msgstr ""
+
+#: contrib/admin/templates/admin/change_form.html:51
+msgid "Order:"
+msgstr ""
+
+#: contrib/admin/templates/admin/submit_line.html:4
+msgid "Save as new"
+msgstr "కొత్త దాని లా దాచు"
+
+#: contrib/admin/templates/admin/submit_line.html:5
+msgid "Save and add another"
+msgstr "దాచి కొత్త దానిని కలపండి"
+
+#: contrib/admin/templates/admin/submit_line.html:6
+msgid "Save and continue editing"
+msgstr "దాచి మార్చుటా ఉందండి"
+
+#: contrib/admin/templates/admin/submit_line.html:7
+msgid "Save"
+msgstr "దాచు"
+
+#: contrib/admin/templates/admin/invalid_setup.html:8
+msgid ""
+"Something's wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:6
+msgid ""
+"First, enter a username and password. Then, you'll be able to edit more user "
+"options."
+msgstr ""
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:12
+msgid "Username"
+msgstr "యూఙర్ పేరు"
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:18
+msgid "Password"
+msgstr "పాస్ వర్డ్"
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:23
+msgid "Password (again)"
+msgstr "పాస్ వర్డ్ (మళ్ళీ)"
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:24
+msgid "Enter the same password as above, for verification."
+msgstr "ఇందాక పాస్ వర్డ్ మళ్ళీ ఇవ్వండి పరిశీలన కోసము"
+
+#: contrib/admin/templates/registration/password_change_done.html:4
+#: contrib/admin/templates/registration/password_change_form.html:4
+#: contrib/admin/templates/registration/password_change_form.html:6
+#: contrib/admin/templates/registration/password_change_form.html:10
+msgid "Password change"
+msgstr "పాస్ వర్డ్ మార్పు"
+
+#: contrib/admin/templates/registration/password_change_done.html:6
+#: contrib/admin/templates/registration/password_change_done.html:10
+msgid "Password change successful"
+msgstr "పాస్ వర్డ్ మార్పు ఙయప్రదమైండి "
+
+#: contrib/admin/templates/registration/password_change_done.html:12
+msgid "Your password was changed."
+msgstr "మీ పాస్ వర్డ్ మార్చబడిండి"
+
+#: contrib/admin/templates/registration/password_reset_form.html:4
+#: contrib/admin/templates/registration/password_reset_form.html:6
+#: contrib/admin/templates/registration/password_reset_form.html:10
+#: contrib/admin/templates/registration/password_reset_done.html:4
+msgid "Password reset"
+msgstr "పాస్ వర్డ్ రీసెట్"
+
+#: contrib/admin/templates/registration/password_reset_form.html:12
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll reset "
+"your password and e-mail the new one to you."
+msgstr "పాస్ వర్డ్ మర్చిపోయారా? మీ ఈ మెయిల్ అడ్రస్ ఇవ్వండి , మీ పాస్ వర్డ్ రీసెట్ చేసి మీకు కొత్తది ఈ మెయిల్ చేస్తాము "
+
+#: contrib/admin/templates/registration/password_reset_form.html:16
+msgid "E-mail address:"
+msgstr "ఈ మెయిల్ అడ్రస్"
+
+#: contrib/admin/templates/registration/password_reset_form.html:16
+msgid "Reset my password"
+msgstr "నా పాస్ వర్డ్ రీసెట్ చేయండి"
+
+#: contrib/admin/templates/registration/logged_out.html:8
+msgid "Thanks for spending some quality time with the Web site today."
+msgstr ""
+
+#: contrib/admin/templates/registration/logged_out.html:10
+msgid "Log in again"
+msgstr "మళ్ళీ లాగ్ ఇన్ అవ్వండి"
+
+#: contrib/admin/templates/registration/password_reset_done.html:6
+#: contrib/admin/templates/registration/password_reset_done.html:10
+msgid "Password reset successful"
+msgstr "పాస్ వర్డ్ రీసెట్ ఙయప్రదమైండి"
+
+#: contrib/admin/templates/registration/password_reset_done.html:12
+msgid ""
+"We've e-mailed a new password to the e-mail address you submitted. You "
+"should be receiving it shortly."
+msgstr "మీరు ఇచ్చిన ఈ మెయిల్ అడ్రస్ కి కొత్త పాస్ వర్డ్ ఈ మెయిల్ చేసాము.మీరు తొందర లో దానిని అందుకుంటారు ."
+
+#: contrib/admin/templates/registration/password_change_form.html:12
+msgid ""
+"Please enter your old password, for security's sake, and then enter your new "
+"password twice so we can verify you typed it in correctly."
+msgstr "దయచేసి రక్షన కోసము, మీ పాత పాస్ వర్డ్ ఇవ్వండి , కొత్త పాస్ వర్డ్ రెండు సార్లు ఇవ్వండి , ఎం దుకంటే మీరు తప్పు ఇస్తే సరిచేయటానికి "
+
+#: contrib/admin/templates/registration/password_change_form.html:17
+msgid "Old password:"
+msgstr "పాత పాస్ వర్డ్ "
+
+#: contrib/admin/templates/registration/password_change_form.html:19
+msgid "New password:"
+msgstr "కొత్త పాస్ వర్డ్"
+
+#: contrib/admin/templates/registration/password_change_form.html:21
+msgid "Confirm password:"
+msgstr "పాస్ వర్డ్ పక్కా చేయండి"
+
+#: contrib/admin/templates/registration/password_change_form.html:23
+msgid "Change my password"
+msgstr "నా పాస్ వర్డ్ మార్చండి"
+
+#: contrib/admin/templates/registration/password_reset_.html:2
+msgid "You're receiving this e-mail because you requested a password reset"
+msgstr "మీరు ఈ ఈ మెయిల్ అందుకున్నారు, ఎందుకంటే పాస్ వర్డ్ రీసెట్ కోసము కోరారు"
+
+#: contrib/admin/templates/registration/password_reset_email.html:3
+#, python-format
+msgid "for your user account at %(site_name)s"
+msgstr ""
+
+#: contrib/admin/templates/registration/password_reset_email.html:5
+#, python-format
+msgid "Your new password is: %(new_password)s"
+msgstr "మీ కొత్త పాస్ వర్డ్ : %(new_password)s "
+
+#: contrib/admin/templates/registration/password_reset_email.html:7
+msgid "Feel free to change this password by going to this page:"
+msgstr "నిస్సందేహము గా ఈ పేఙి క్ కి వెళ్ళి పాస్ వర్డ్ మార్చుకోండి "
+
+#: contrib/admin/templates/registration/password_reset_email.html:11
+msgid "Your username, in case you've forgotten:"
+msgstr "మీ యూఙర్ పేరు, ఒక వేళ మర్చిపోయి ఉంటే "
+
+#: contrib/admin/templates/registration/password_reset_email.html:13
+msgid "Thanks for using our site!"
+msgstr "మా సైట్ వాడినందుకు ధన్యవాదములు!"
+
+#: contrib/admin/templates/registration/password_reset_email.html:15
+#, python-format
+msgid "The %(site_name)s team"
+msgstr ""
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+msgid "Bookmarklets"
+msgstr ""
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:5
+msgid "Documentation bookmarklets"
+msgstr ""
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:9
+msgid ""
+"\n"
+"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
+"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
+"select the bookmarklet from any page in the site. Note that some of these\n"
+"bookmarklets require you to be viewing the site from a computer designated\n"
+"as \"internal\" (talk to your system administrator if you aren't sure if\n"
+"your computer is \"internal\").</p>\n"
+msgstr ""
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:19
+msgid "Documentation for this page"
+msgstr ""
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:20
+msgid ""
+"Jumps you from any page to the documentation for the view that generates "
+"that page."
+msgstr ""
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:22
+msgid "Show object ID"
+msgstr "వస్తువు ఇడి చూడండి"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:23
+msgid ""
+"Shows the content-type and unique ID for pages that represent a single "
+"object."
+msgstr "వస్తువు"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:25
+msgid "Edit this object (current window)"
+msgstr "వస్తువు"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:26
+msgid "Jumps to the admin page for pages that represent a single object."
+msgstr "వస్తువు"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:28
+msgid "Edit this object (new window)"
+msgstr "వస్తువు"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:29
+msgid "As above, but opens the admin page in a new window."
+msgstr ""
+
+#: contrib/admin/templates/widget/date_time.html:3
+msgid "Date:"
+msgstr "తారీఖు"
+
+#: contrib/admin/templates/widget/date_time.html:4
+msgid "Time:"
+msgstr "వేళ:"
+
+#: contrib/admin/templates/widget/file.html:2
+msgid "Currently:"
+msgstr "ఇప్పుడు"
+
+#: contrib/admin/templates/widget/file.html:3
+msgid "Change:"
+msgstr "మార్చు"
+
+#: contrib/redirects/models.py:7
+msgid "redirect from"
+msgstr ""
+
+#: contrib/redirects/models.py:8
+msgid ""
+"This should be an absolute path, excluding the domain name. Example: '/"
+"events/search/'."
+msgstr ""
+
+#: contrib/redirects/models.py:9
+msgid "redirect to"
+msgstr ""
+
+#: contrib/redirects/models.py:10
+msgid ""
+"This can be either an absolute path (as above) or a full URL starting with "
+"'http://'."
+msgstr ""
+
+#: contrib/redirects/models.py:13
+msgid "redirect"
+msgstr ""
+
+#: contrib/redirects/models.py:14
+msgid "redirects"
+msgstr ""
+
+#: contrib/flatpages/models.py:8
+msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
+msgstr ""
+
+#: contrib/flatpages/models.py:9
+msgid "title"
+msgstr "పట్టము"
+
+#: contrib/flatpages/models.py:10
+msgid "content"
+msgstr ""
+
+#: contrib/flatpages/models.py:11
+msgid "enable comments"
+msgstr ""
+
+#: contrib/flatpages/models.py:12
+msgid "template name"
+msgstr ""
+
+#: contrib/flatpages/models.py:13
+msgid ""
+"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
+"will use 'flatpages/default.html'."
+msgstr "Example: 'flatpages/contact_page.html'.ఇది ఇవ్వకపోతే సిస్టం " " 'flatpages/default.html' ని వాడుకుంటడి"
+
+#: contrib/flatpages/models.py:14
+msgid "registration required"
+msgstr "నమొదు చేయటము అవసరం"
+
+#: contrib/flatpages/models.py:14
+msgid "If this is checked, only logged-in users will be able to view the page."
+msgstr "ఇది చెక్ చేసి ఉంటే కేవలం లాగ్గడ్ ఇన్ యూఙర్లు పేఙి చూడలేస్తారు"
+
+#: contrib/flatpages/models.py:18
+msgid "flat page"
+msgstr ""
+
+#: contrib/flatpages/models.py:19
+msgid "flat pages"
+msgstr ""
+
+#: contrib/auth/views.py:39
+msgid "Logged out"
+msgstr "లాగ్గడ్ ఔట్"
+
+#: contrib/auth/models.py:38 contrib/auth/models.py:57
+msgid "name"
+msgstr "పేరు"
+
+#: contrib/auth/models.py:40
+msgid "codename"
+msgstr ""
+
+#: contrib/auth/models.py:42
+msgid "permission"
+msgstr "అనుమతి"
+
+#: contrib/auth/models.py:43 contrib/auth/models.py:58
+msgid "permissions"
+msgstr "అనుమతులు"
+
+#: contrib/auth/models.py:60
+msgid "group"
+msgstr "గుంపు"
+
+#: contrib/auth/models.py:61 contrib/auth/models.py:100
+msgid "groups"
+msgstr "గుంపులు"
+
+#: contrib/auth/models.py:90
+msgid "username"
+msgstr "యూఙర్ పేరు"
+
+#: contrib/auth/models.py:90
+msgid ""
+"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
+"digits and underscores)."
+msgstr ""
+
+#: contrib/auth/models.py:91
+msgid "first name"
+msgstr "పేరు"
+
+#: contrib/auth/models.py:92
+msgid "last name"
+msgstr "ఇంటి పేరు"
+
+#: contrib/auth/models.py:93
+msgid "e-mail address"
+msgstr "ఈ మెయిల్ అడ్రస్"
+
+#: contrib/auth/models.py:94
+msgid "password"
+msgstr "పాస్ వర్డ్"
+
+#: contrib/auth/models.py:94
+msgid "Use '[algo]$[salt]$[hexdigest]'"
+msgstr ""
+
+#: contrib/auth/models.py:95
+msgid "staff status"
+msgstr "ఉద్యోగస్తుల స్థితి"
+
+#: contrib/auth/models.py:95
+msgid "Designates whether the user can log into this admin site."
+msgstr ""
+
+#: contrib/auth/models.py:96
+msgid "active"
+msgstr "చురుకు గా"
+
+#: contrib/auth/models.py:96
+msgid ""
+"Designates whether this user can log into the Django admin. Unselect this "
+"instead of deleting accounts."
+msgstr ""
+
+#: contrib/auth/models.py:97
+msgid "superuser status"
+msgstr ""
+
+#: contrib/auth/models.py:97
+msgid ""
+"Designates that this user has all permissions without explicitly assigning "
+"them."
+msgstr ""
+
+#: contrib/auth/models.py:98
+msgid "last login"
+msgstr "గత లాగిన్"
+
+#: contrib/auth/models.py:99
+msgid "date joined"
+msgstr "చేరిన తారీఖు"
+
+#: contrib/auth/models.py:101
+msgid ""
+"In addition to the permissions manually assigned, this user will also get "
+"all permissions granted to each group he/she is in."
+msgstr ""
+
+#: contrib/auth/models.py:102
+msgid "user permissions"
+msgstr "యూఙర్ అనుమతులు"
+
+#: contrib/auth/models.py:105
+msgid "user"
+msgstr "యూఙర్"
+
+#: contrib/auth/models.py:106
+msgid "users"
+msgstr "యూఙర్లు"
+
+#: contrib/auth/models.py:111
+msgid "Personal info"
+msgstr "పర్సనల్ సమాచారం "
+
+#: contrib/auth/models.py:112
+msgid "Permissions"
+msgstr "అనుమతులు"
+
+#: contrib/auth/models.py:113
+msgid "Important dates"
+msgstr "ముఖ్యమైన తారీఖులు"
+
+#: contrib/auth/models.py:114
+msgid "Groups"
+msgstr "గుంపులు"
+
+#: contrib/auth/models.py:256
+msgid "message"
+msgstr "సమాచారం"
+
+#: contrib/auth/forms.py:52
+msgid ""
+"Your Web browser doesn't appear to have cookies enabled. Cookies are "
+"required for logging in."
+msgstr ""
+
+#: contrib/auth/forms.py:61
+msgid "This account is inactive."
+msgstr ""
+
+#: contrib/contenttypes/models.py:20
+msgid "python model class name"
+msgstr "పైతాన్ మొడల్ క్లాస్ పేరు"
+
+#: contrib/contenttypes/models.py:23
+msgid "content type"
+msgstr ""
+
+#: contrib/contenttypes/models.py:24
+msgid "content types"
+msgstr ""
+
+#: contrib/sessions/models.py:51
+msgid "session key"
+msgstr ""
+
+#: contrib/sessions/models.py:52
+msgid "session data"
+msgstr ""
+
+#: contrib/sessions/models.py:53
+msgid "expire date"
+msgstr ""
+
+#: contrib/sessions/models.py:57
+msgid "session"
+msgstr ""
+
+#: contrib/sessions/models.py:58
+msgid "sessions"
+msgstr ""
+
+#: contrib/sites/models.py:10
+msgid "domain name"
+msgstr ""
+
+#: contrib/sites/models.py:11
+msgid "display name"
+msgstr "కనిపిచ్చే పేరు"
+
+#: contrib/sites/models.py:15
+msgid "site"
+msgstr "సైట్"
+
+#: contrib/sites/models.py:16
+msgid "sites"
+msgstr "సైట్లు"
+
+#: utils/dates.py:6
+msgid "Monday"
+msgstr "సోమవారము"
+
+#: utils/dates.py:6
+msgid "Tuesday"
+msgstr "మంగళవారము"
+
+#: utils/dates.py:6
+msgid "Wednesday"
+msgstr "బుధవారము"
+
+#: utils/dates.py:6
+msgid "Thursday"
+msgstr "గురువారము"
+
+#: utils/dates.py:6
+msgid "Friday"
+msgstr "శుక్రవారము"
+
+#: utils/dates.py:7
+msgid "Saturday"
+msgstr "శనివారము"
+
+#: utils/dates.py:7
+msgid "Sunday"
+msgstr "ఆదివారము"
+
+#: utils/dates.py:14
+msgid "January"
+msgstr "ఙాన్వరి "
+
+#: utils/dates.py:14
+msgid "February"
+msgstr "ఫిబ్రవరి"
+
+#: utils/dates.py:14 utils/dates.py:27
+msgid "March"
+msgstr "మార్చి"
+
+#: utils/dates.py:14 utils/dates.py:27
+msgid "April"
+msgstr "ఎప్రిల్"
+
+#: utils/dates.py:14 utils/dates.py:27
+msgid "May"
+msgstr "మే"
+
+#: utils/dates.py:14 utils/dates.py:27
+msgid "June"
+msgstr "ఙూను"
+
+#: utils/dates.py:15 utils/dates.py:27
+msgid "July"
+msgstr "ఙులై"
+
+#: utils/dates.py:15
+msgid "August"
+msgstr "ఆగష్టు"
+
+#: utils/dates.py:15
+msgid "September"
+msgstr "సెప్టెంబర్"
+
+#: utils/dates.py:15
+msgid "October"
+msgstr "అక్టోబర్"
+
+#: utils/dates.py:15
+msgid "November"
+msgstr "నవంబర్"
+
+#: utils/dates.py:16
+msgid "December"
+msgstr "డిసెంబర్"
+
+#: utils/dates.py:19
+msgid "jan"
+msgstr "ఙాన్"
+
+#: utils/dates.py:19
+msgid "feb"
+msgstr "ఫిబ్"
+
+#: utils/dates.py:19
+msgid "mar"
+msgstr "మార్"
+
+#: utils/dates.py:19
+msgid "apr"
+msgstr "ఎప్ర్"
+
+#: utils/dates.py:19
+msgid "may"
+msgstr "మే"
+
+#: utils/dates.py:19
+msgid "jun"
+msgstr "ఙూన్"
+
+#: utils/dates.py:20
+msgid "jul"
+msgstr "ఙుల్"
+
+#: utils/dates.py:20
+msgid "aug"
+msgstr "ఆగ్"
+
+#: utils/dates.py:20
+msgid "sep"
+msgstr "సెప్"
+
+#: utils/dates.py:20
+msgid "oct"
+msgstr "అక్ట్"
+
+#: utils/dates.py:20
+msgid "nov"
+msgstr "నవ్"
+
+#: utils/dates.py:20
+msgid "dec"
+msgstr "డిస్"
+
+#: utils/dates.py:27
+msgid "Jan."
+msgstr "ఙాన్"
+
+#: utils/dates.py:27
+msgid "Feb."
+msgstr "ఫిబ్"
+
+#: utils/dates.py:28
+msgid "Aug."
+msgstr "ఆగ్"
+
+#: utils/dates.py:28
+msgid "Sept."
+msgstr "సెప్"
+
+#: utils/dates.py:28
+msgid "Oct."
+msgstr "అక్ట్"
+
+#: utils/dates.py:28
+msgid "Nov."
+msgstr "నవ్"
+
+#: utils/dates.py:28
+msgid "Dec."
+msgstr "డిస్"
+
+#: utils/timesince.py:12
+msgid "year"
+msgid_plural "years"
+msgstr[0] "సంవత్సరం"
+msgstr[1] "సంవత్సరాలు"
+
+#: utils/timesince.py:13
+msgid "month"
+msgid_plural "months"
+msgstr[0] "నెల"
+msgstr[1] "నెలలు"
+
+#: utils/timesince.py:14
+msgid "week"
+msgid_plural "weeks"
+msgstr[0] "వారం"
+msgstr[1] "వారాలు"
+
+#: utils/timesince.py:15
+msgid "day"
+msgid_plural "days"
+msgstr[0] "రోఙు"
+msgstr[1] "రోఙులు"
+
+#: utils/timesince.py:16
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "గంటలు"
+msgstr[1] "గంట"
+
+#: utils/timesince.py:17
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "నిముషం"
+msgstr[1] "నిముషాలు"
+
+#: utils/translation/trans_real.py:362
+msgid "DATE_FORMAT"
+msgstr ""
+
+#: utils/translation/trans_real.py:363
+msgid "DATETIME_FORMAT"
+msgstr ""
+
+#: utils/translation/trans_real.py:364
+msgid "TIME_FORMAT"
+msgstr ""
+
+#: utils/translation/trans_real.py:380
+msgid "YEAR_MONTH_FORMAT"
+msgstr ""
+
+#: utils/translation/trans_real.py:381
+msgid "MONTH_DAY_FORMAT"
+msgstr ""
+
+#: conf/global_settings.py:39
+msgid "Arabic"
+msgstr "ఆరబిక్"
+
+#: conf/global_settings.py:40
+msgid "Bengali"
+msgstr "బెంగాలి"
+
+#: conf/global_settings.py:41
+msgid "Czech"
+msgstr "క్ఙెఖ్"
+
+#: conf/global_settings.py:42
+msgid "Welsh"
+msgstr "వెల్శ్"
+
+#: conf/global_settings.py:43
+msgid "Danish"
+msgstr "డానిశ్"
+
+#: conf/global_settings.py:44
+msgid "German"
+msgstr "ఙెర్మన్"
+
+#: conf/global_settings.py:45
+msgid "Greek"
+msgstr "గ్రీక్"
+
+#: conf/global_settings.py:46
+msgid "English"
+msgstr "ఆంగ్లము"
+
+#: conf/global_settings.py:47
+msgid "Spanish"
+msgstr "స్పానిష్"
+
+#: conf/global_settings.py:48
+msgid "Argentinean Spanish"
+msgstr "అర్ఙంటీనా స్పానిష్"
+
+#: conf/global_settings.py:49
+msgid "Finnish"
+msgstr "ఫీన్నిష్"
+
+#: conf/global_settings.py:50
+msgid "French"
+msgstr "ఫ్రెంచ్"
+
+#: conf/global_settings.py:51
+msgid "Galician"
+msgstr "గలిసియన్"
+
+#: conf/global_settings.py:52
+msgid "Hungarian"
+msgstr "హంగారియన్"
+
+#: conf/global_settings.py:53
+msgid "Hebrew"
+msgstr "హెబ్రివ్"
+
+#: conf/global_settings.py:54
+msgid "Icelandic"
+msgstr "ఐస్ లాండిక్"
+
+#: conf/global_settings.py:55
+msgid "Italian"
+msgstr "ఇటాలియవ్"
+
+#: conf/global_settings.py:56
+msgid "Japanese"
+msgstr "ఙపనీస్"
+
+#: conf/global_settings.py:57
+msgid "Dutch"
+msgstr "డట్చ్"
+
+#: conf/global_settings.py:58
+msgid "Norwegian"
+msgstr "నార్వీఙియన్"
+
+#: conf/global_settings.py:59
+msgid "Brazilian"
+msgstr "బ్రఙీలియన్"
+
+#: conf/global_settings.py:60
+msgid "Romanian"
+msgstr "రొమానియన్"
+
+#: conf/global_settings.py:61
+msgid "Russian"
+msgstr "రస్సెన్"
+
+#: conf/global_settings.py:62
+msgid "Slovak"
+msgstr "స్లొవాక్"
+
+#: conf/global_settings.py:63
+msgid "Slovenian"
+msgstr "స్లొవానియన్"
+
+#: conf/global_settings.py:64
+msgid "Serbian"
+msgstr "సెర్బియన్"
+
+#: conf/global_settings.py:65
+msgid "Swedish"
+msgstr "స్వీడిష్"
+
+#: conf/global_settings.py:66
+msgid "Tamil"
+msgstr "తమిళ్"
+
+#: conf/global_settings.py:67
+msgid "Turkish"
+msgstr "టర్కిశ్"
+
+#: conf/global_settings.py:68
+msgid "Ukrainian"
+msgstr "యుక్రానియన్"
+
+#: conf/global_settings.py:69
+msgid "Simplified Chinese"
+msgstr "వాడుక చైనీస్"
+
+#: conf/global_settings.py:70
+msgid "Traditional Chinese"
+msgstr "గ్రాంధిక చైనీస్"
+
+#: core/validators.py:63
+msgid "This value must contain only letters, numbers and underscores."
+msgstr "ఈ విలువ లో అక్షరాలు, అంకెలు ఇంకా అండర్ స్కోర్లు ఉందాలి"
+
+#: core/validators.py:67
+msgid ""
+"This value must contain only letters, numbers, underscores, dashes or "
+"slashes."
+msgstr "ఈ విలువ లో అక్షరాలు, అంకెలు , అండర్ స్కోర్లు ,డాష్ లు లేక స్లాష్ లు ఉందాలి"
+
+#: core/validators.py:71
+msgid "This value must contain only letters, numbers, underscores or hyphens."
+msgstr "ఈ విలువ లో అక్షరాలు, అంకెలు , అండర్ స్కోర్లు లేక హైఫన్లు ఉందాలి"
+
+#: core/validators.py:75
+msgid "Uppercase letters are not allowed here."
+msgstr ""
+
+#: core/validators.py:79
+msgid "Lowercase letters are not allowed here."
+msgstr ""
+
+#: core/validators.py:86
+msgid "Enter only digits separated by commas."
+msgstr "కామాల తో అంకెలు విడడీసి ఇవ్వండి "
+
+#: core/validators.py:98
+msgid "Enter valid e-mail addresses separated by commas."
+msgstr "కామాల తో విడతీసి సరైన ఈ మెయిల్ అడ్రస్ ఇవ్వండి"
+
+#: core/validators.py:102
+msgid "Please enter a valid IP address."
+msgstr "దయచేసి సరైన ఐపి అడ్రస్ ఇవ్వండి "
+
+#: core/validators.py:106
+msgid "Empty values are not allowed here."
+msgstr "ఇక్కడ కాళీ విలువలు అనుమతించబడవు "
+
+#: core/validators.py:110
+msgid "Non-numeric characters aren't allowed here."
+msgstr "అంకెలు కాని చిహ్నాలు అనుమతించబడవు"
+
+#: core/validators.py:114
+msgid "This value can't be comprised solely of digits."
+msgstr "ఈ విలువ లో ఉట్టి మాత్రమే ఉందకూడడు"
+
+#: core/validators.py:119
+msgid "Enter a whole number."
+msgstr "పూర్ణ సంఖ్య ఇవ్వండి"
+
+#: core/validators.py:123
+msgid "Only alphabetical characters are allowed here."
+msgstr "అక్షరాలు అయిన చిహ్నాలు మాత్రమే అనుమతించబడతాయి "
+
+#: core/validators.py:138
+msgid "Year must be 1900 or later."
+msgstr "సంవత్సరము 1900 లేక దాని తరువాత అయ్యి ఉందాలి "
+
+#: core/validators.py:142
+#, python-format
+msgid "Invalid date: %s."
+msgstr "సరికాని తారీఖు"
+
+#: core/validators.py:146 db/models/fields/__init__.py:415
+msgid "Enter a valid date in YYYY-MM-DD format."
+msgstr ""
+
+#: core/validators.py:151
+msgid "Enter a valid time in HH:MM format."
+msgstr ""
+
+#: core/validators.py:155 db/models/fields/__init__.py:477
+msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
+msgstr ""
+
+#: core/validators.py:160
+msgid "Enter a valid e-mail address."
+msgstr "సరైన ఈ మెయిల్ అడ్రస్ ఇవ్వండి"
+
+#: core/validators.py:172 core/validators.py:401 forms/__init__.py:661
+msgid "No file was submitted. Check the encoding type on the form."
+msgstr ""
+
+#: core/validators.py:176
+msgid ""
+"Upload a valid image. The file you uploaded was either not an image or a "
+"corrupted image."
+msgstr ""
+
+#: core/validators.py:183
+#, python-format
+msgid "The URL %s does not point to a valid image."
+msgstr ""
+
+#: core/validators.py:187
+#, python-format
+msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
+msgstr ""
+
+#: core/validators.py:195
+#, python-format
+msgid "The URL %s does not point to a valid QuickTime video."
+msgstr ""
+
+#: core/validators.py:199
+msgid "A valid URL is required."
+msgstr "సరైన URL కావాలి"
+
+#: core/validators.py:213
+#, python-format
+msgid ""
+"Valid HTML is required. Specific errors are:\n"
+"%s"
+msgstr "సరైన HTML ఇవ్వండి .ప్రత్యేకమైన తప్పులు :\n"
+"%s"
+#: core/validators.py:220
+#, python-format
+msgid "Badly formed XML: %s"
+msgstr ""
+
+#: core/validators.py:230
+#, python-format
+msgid "Invalid URL: %s"
+msgstr ""
+
+#: core/validators.py:234 core/validators.py:236
+#, python-format
+msgid "The URL %s is a broken link."
+msgstr ""
+
+#: core/validators.py:242
+msgid "Enter a valid U.S. state abbreviation."
+msgstr "దయచేసి సరైన అగ్ర రాఙ్య సంక్షేపము చేసిన రాష్ట్రము పేరు ఇవ్వండి"
+
+#: core/validators.py:256
+#, python-format
+msgid "Watch your mouth! The word %s is not allowed here."
+msgid_plural "Watch your mouth! The words %s are not allowed here."
+msgstr[0] ""
+msgstr[1] ""
+
+#: core/validators.py:263
+#, python-format
+msgid "This field must match the '%s' field."
+msgstr "ఈ ఫీల్డ్ '%s' ఫీల్డ్ కి సరి తూగాలి"
+
+#: core/validators.py:282
+msgid "Please enter something for at least one field."
+msgstr "దయచేసి ఏదో ఒకటి ఏదో ఒక ఫీల్డ్ కి ఇవ్వండి "
+
+#: core/validators.py:291 core/validators.py:302
+msgid "Please enter both fields or leave them both empty."
+msgstr "దయచేసి రెండు ఫీల్డ్లలు ఇవ్వండి లేకపోతే రెండు కాళీ గా వదిలేయండి "
+
+#: core/validators.py:309
+#, python-format
+msgid "This field must be given if %(field)s is %(value)s"
+msgstr "%(field)s %(value)s ఐతే ఈ ఫీల్డ్ ఇవ్వాలి "
+
+#: core/validators.py:321
+#, python-format
+msgid "This field must be given if %(field)s is not %(value)s"
+msgstr "%(field)s %(value)s అవ్వకపోతే ఈ ఫీల్డ్ ఇవ్వాలి "
+
+#: core/validators.py:340
+msgid "Duplicate values are not allowed."
+msgstr "నకలీ విలువలు ఇక్కడ అనుమతించబడవు"
+
+#: core/validators.py:363
+#, python-format
+msgid "This value must be a power of %s."
+msgstr ""
+
+#: core/validators.py:374
+msgid "Please enter a valid decimal number."
+msgstr ""
+
+#: core/validators.py:378
+#, python-format
+msgid "Please enter a valid decimal number with at most %s total digit."
+msgid_plural "Please enter a valid decimal number with at most %s total digits."
+msgstr[0] ""
+msgstr[1] ""
+
+#: core/validators.py:381
+#, python-format
+msgid "Please enter a valid decimal number with a whole part of at most %s digit."
+msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits."
+msgstr[0] ""
+msgstr[1] ""
+
+#: core/validators.py:384
+#, python-format
+msgid "Please enter a valid decimal number with at most %s decimal place."
+msgid_plural "Please enter a valid decimal number with at most %s decimal places."
+msgstr[0] ""
+msgstr[1] ""
+
+#: core/validators.py:394
+#, python-format
+msgid "Make sure your uploaded file is at least %s bytes big."
+msgstr ""
+
+#: core/validators.py:395
+#, python-format
+msgid "Make sure your uploaded file is at most %s bytes big."
+msgstr ""
+
+#: core/validators.py:412
+msgid "The format for this field is wrong."
+msgstr "ఈ ఫీల్డ్ ఫోర్మాట్ తప్పు"
+
+#: core/validators.py:427
+msgid "This field is invalid."
+msgstr "ఈ ఫీల్డ్ సరి కానిది"
+
+#: core/validators.py:463
+#, python-format
+msgid "Could not retrieve anything from %s."
+msgstr "%s నించి ఏమి రాబట్టలేము"
+
+#: core/validators.py:466
+#, python-format
+msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
+msgstr ""
+
+#: core/validators.py:499
+#, python-format
+msgid ""
+"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
+"\"%(start)s\".)"
+msgstr ""
+
+#: core/validators.py:503
+#, python-format
+msgid ""
+"Some text starting on line %(line)s is not allowed in that context. (Line "
+"starts with \"%(start)s\".)"
+msgstr ""
+
+#: core/validators.py:508
+#, python-format
+msgid ""
+"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
+"(start)s\".)"
+msgstr ""
+
+#: core/validators.py:513
+#, python-format
+msgid ""
+"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
+"(start)s\".)"
+msgstr ""
+
+#: core/validators.py:517
+#, python-format
+msgid ""
+"A tag on line %(line)s is missing one or more required attributes. (Line "
+"starts with \"%(start)s\".)"
+msgstr ""
+
+#: core/validators.py:522
+#, python-format
+msgid ""
+"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
+"starts with \"%(start)s\".)"
+msgstr ""
+
+#: views/generic/create_update.py:43
+#, python-format
+msgid "The %(verbose_name)s was created successfully."
+msgstr "%(verbose_name)లు ఙయప్రదంగా తయారయింది"
+
+#: views/generic/create_update.py:117
+#, python-format
+msgid "The %(verbose_name)s was updated successfully."
+msgstr "%(verbose_name)లు ఙయప్రదంగా @@"
+
+#: views/generic/create_update.py:184
+#, python-format
+msgid "The %(verbose_name)s was deleted."
+msgstr "%(verbose_name)లు తీసివేయబడినది"
+
+#: db/models/manipulators.py:302
+#, python-format
+msgid "%(object)s with this %(type)s already exists for the given %(field)s."
+msgstr "%(field)ల లో %(object)తో %(type) ఉన్నాయి"
+
+#: db/models/fields/__init__.py:40
+#, python-format
+msgid "%(optname)s with this %(fieldname)s already exists."
+msgstr "%(optname)లు తో %(fieldname) ముందే ఉన్నాయి ."
+
+#: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265
+#: db/models/fields/__init__.py:551 db/models/fields/__init__.py:562
+#: forms/__init__.py:346
+msgid "This field is required."
+msgstr "ఈ ఫీల్డ్ అవసరము"
+
+#: db/models/fields/__init__.py:340
+msgid "This value must be an integer."
+msgstr "ఈ విలువ లో ఉందాలి"
+
+#: db/models/fields/__init__.py:372
+msgid "This value must be either True or False."
+msgstr "ఈ విలువ తప్పైన ఒప్పైన ఉందాలి"
+
+#: db/models/fields/__init__.py:388
+msgid "This field cannot be null."
+msgstr "ఈ ఫీల్డ్ కాళీగా ఉందకూడడు "
+
+#: db/models/fields/__init__.py:571
+msgid "Enter a valid filename."
+msgstr "దయచేసి సరైన దస్త్రం పేరు ఇవ్వండి."
+
+#: db/models/fields/related.py:51
+#, python-format
+msgid "Please enter a valid %s."
+msgstr "దయచేసి సరైన %sఇవ్వండి."
+
+#: db/models/fields/related.py:618
+msgid "Separate multiple IDs with commas."
+msgstr "గుంపు గా ఉన్న ఐడిల ను కామా తో విడడీయంది"
+
+#: db/models/fields/related.py:620
+msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgstr "\"Control\" కాని \"Command\" మాక్ లో నొక్కి ఉంచండి , ఒకటి కన్న ఎక్కువ ఎన్నుకోవటానికి"
+
+#: db/models/fields/related.py:664
+#, python-format
+msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
+msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid."
+msgstr[0] "దయచేసి సరైన %(self)s ఐడిలు ఇవ్వండి. "
+msgstr[1] ""
+
+#: forms/__init__.py:381
+#, python-format
+msgid "Ensure your text is less than %s character."
+msgid_plural "Ensure your text is less than %s characters."
+msgstr[0] "మీరు ఇచ్చిన టెక్స్ట %s ఆక్షరము కన్న తక్కువ ఉందాలి"
+msgstr[1] "మీరు ఇచ్చిన టెక్స్ట %s ఆక్షరములు కన్న తక్కువ ఉందాలి"
+
+#: forms/__init__.py:386
+msgid "Line breaks are not allowed here."
+msgstr "లైన్ బ్రేక్స్ కి ఇక్కడ ఆనుమతి లేదు"
+
+#: forms/__init__.py:487 forms/__init__.py:560 forms/__init__.py:599
+#, python-format
+msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
+msgstr "సరైనది ఎంచుకోండి; %(choices) ల లో '%(data)s' లేవు "
+
+#: forms/__init__.py:663
+msgid "The submitted file is empty."
+msgstr "మీరు సమర్పించిన ఫైల్ కాళీగా ఉంది "
+
+#: forms/__init__.py:719
+msgid "Enter a whole number between -32,768 and 32,767."
+msgstr " -32,768 ఇంకా 32,767 మధ్యలో ఒక ఆంకె ఇవ్వండి"
+
+#: forms/__init__.py:729
+msgid "Enter a positive number."
+msgstr "ఒక ధన సంఖ్య ఇవ్వండి"
+
+#: forms/__init__.py:739
+msgid "Enter a whole number between 0 and 32,767."
+msgstr "0 ఇంకా 32,767 మధ్యలో ఒక పూర్ ఇవ్వండి"
+
+#: template/defaultfilters.py:401
+msgid "yes,no,maybe"
+msgstr "అవును, కాదు , ఏమొ"
+
diff --git a/django/conf/locale/te/LC_MESSAGES/djangojs.mo b/django/conf/locale/te/LC_MESSAGES/djangojs.mo
new file mode 100644
index 0000000000..c7c56427cb
--- /dev/null
+++ b/django/conf/locale/te/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/django/conf/locale/te/LC_MESSAGES/djangojs.po b/django/conf/locale/te/LC_MESSAGES/djangojs.po
new file mode 100644
index 0000000000..7f392fde25
--- /dev/null
+++ b/django/conf/locale/te/LC_MESSAGES/djangojs.po
@@ -0,0 +1,110 @@
+# translation of djangojs.po to Telugu
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# pavithran <pavithran.s@gmail.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: djangojs\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-12-09 11:51+0100\n"
+"PO-Revision-Date: 2007-03-06 16:08+0530\n"
+"Last-Translator: pavithran <pavithran.s@gmail.com>\n"
+"Language-Team: Telugu <indlinux-telugu@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: contrib/admin/media/js/SelectFilter2.js:33
+#, perl-format
+msgid "Available %s"
+msgstr "ఆందుబాతులోఉన్న %s "
+
+#: contrib/admin/media/js/SelectFilter2.js:41
+msgid "Choose all"
+msgstr "అన్నీ ఎన్నుకోండి"
+
+#: contrib/admin/media/js/SelectFilter2.js:46
+msgid "Add"
+msgstr "ఙత చేయి"
+
+#: contrib/admin/media/js/SelectFilter2.js:48
+msgid "Remove"
+msgstr "తీసివేయండి"
+
+#: contrib/admin/media/js/SelectFilter2.js:53
+#, perl-format
+msgid "Chosen %s"
+msgstr "ఎన్నుకున్న %s"
+
+#: contrib/admin/media/js/SelectFilter2.js:54
+msgid "Select your choice(s) and click "
+msgstr "మీ ఇష్టాలు ఎన్నుకోండి"
+
+#: contrib/admin/media/js/SelectFilter2.js:59
+msgid "Clear all"
+msgstr "అన్ని తీసివేయు"
+
+#: contrib/admin/media/js/dateparse.js:26
+#: contrib/admin/media/js/calendar.js:24
+msgid ""
+"January February March April May June July August September October November "
+"December"
+msgstr "ఙాన్వరి ఫిబ్రవరి మార్చి ఎప్రిల్ మే ఙూను ఙులై ఆగష్టు సెప్టెంబర్ అక్టోబర్ నవంబర్ డిసెంబర్"
+
+#: contrib/admin/media/js/dateparse.js:27
+msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
+msgstr "ఆదివారము సోమవారము మంగళవారము బుధవారము గురువారము శుక్రవారము శనివారము"
+
+#: contrib/admin/media/js/calendar.js:25
+msgid "S M T W T F S"
+msgstr "ఆ సో మం భు గు శు శ"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80
+msgid "Now"
+msgstr "ఇప్పుడు"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48
+msgid "Clock"
+msgstr "గడియారము"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77
+msgid "Choose a time"
+msgstr "ఒక సమయము ఎన్నుకోండి"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
+msgid "Midnight"
+msgstr "ఆర్ధరాత్రి"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
+msgid "6 a.m."
+msgstr "6"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
+msgid "Noon"
+msgstr "మధ్యాహ్నము"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168
+msgid "Cancel"
+msgstr "రద్దు చేయు"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162
+msgid "Today"
+msgstr "ఈనాడు"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114
+msgid "Calendar"
+msgstr "కాలెండర్"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160
+msgid "Yesterday"
+msgstr "నిన్న"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164
+msgid "Tomorrow"
+msgstr "రేపు"
+
diff --git a/django/conf/project_template/settings.py b/django/conf/project_template/settings.py
index a44bc172f0..cadb5146b7 100644
--- a/django/conf/project_template/settings.py
+++ b/django/conf/project_template/settings.py
@@ -9,15 +9,18 @@ ADMINS = (
MANAGERS = ADMINS
-DATABASE_ENGINE = '' # 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'.
+DATABASE_ENGINE = '' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'.
DATABASE_NAME = '' # Or path to database file if using sqlite3.
DATABASE_USER = '' # Not used with sqlite3.
DATABASE_PASSWORD = '' # Not used with sqlite3.
DATABASE_HOST = '' # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = '' # Set to empty string for default. Not used with sqlite3.
-# Local time zone for this installation. All choices can be found here:
+# Local time zone for this installation. Choices can be found here:
# http://www.postgresql.org/docs/8.1/static/datetime-keywords.html#DATETIME-TIMEZONE-SET-TABLE
+# although not all variations may be possible on all operating systems.
+# If running in a Windows environment this must be set to the same as your
+# system time zone.
TIME_ZONE = 'America/Chicago'
# Language code for this installation. All choices can be found here:
diff --git a/django/conf/urls/admin_password_reset.py b/django/conf/urls/admin_password_reset.py
deleted file mode 100644
index afa078205a..0000000000
--- a/django/conf/urls/admin_password_reset.py
+++ /dev/null
@@ -1,6 +0,0 @@
-from django.conf.urls.defaults import *
-
-urlpatterns = patterns('django.views',
- (r'^$', 'registration.passwords.password_reset', {'is_admin_site' : True}),
- (r'^done/$', 'registration.passwords.password_reset_done'),
-)
diff --git a/django/conf/urls/registration.py b/django/conf/urls/registration.py
deleted file mode 100644
index 9b41e434f9..0000000000
--- a/django/conf/urls/registration.py
+++ /dev/null
@@ -1,19 +0,0 @@
-from django.conf.urls.defaults import *
-
-urlpatterns = patterns('',
- (r'^login/$', 'django.contrib.auth.views.login'),
- (r'^logout/$', 'django.contrib.auth.views.logout'),
- (r'^login_another/$', 'django.contrib.auth.views.logout_then_login'),
-
- (r'^register/$', 'ellington.registration.views.registration.signup'),
- (r'^register/(?P<challenge_string>\w{32})/$', 'ellington.registration.views.registration.register_form'),
-
- (r'^profile/$', 'ellington.registration.views.profile.profile'),
- (r'^profile/welcome/$', 'ellington.registration.views.profile.profile_welcome'),
- (r'^profile/edit/$', 'ellington.registration.views.profile.edit_profile'),
-
- (r'^password_reset/$', 'django.contrib.auth.views.password_reset'),
- (r'^password_reset/done/$', 'django.contrib.auth.views.password_reset_done'),
- (r'^password_change/$', 'django.contrib.auth.views.password_change'),
- (r'^password_change/done/$', 'django.contrib.auth.views.password_change_done'),
-)
diff --git a/django/contrib/admin/media/css/forms.css b/django/contrib/admin/media/css/forms.css
index 468e06a8a2..0cfe2ff28e 100644
--- a/django/contrib/admin/media/css/forms.css
+++ b/django/contrib/admin/media/css/forms.css
@@ -57,4 +57,4 @@ fieldset.monospace textarea { font-family:"Bitstream Vera Sans Mono",Monaco,"Cou
.vURLField { width:30em; }
.vLargeTextField, .vXMLLargeTextField { width:48em; }
.flatpages-flatpage #id_content { height:40.2em; }
-.module table .vPositiveSmallIntegerField { width:2.2em; } \ No newline at end of file
+.module table .vPositiveSmallIntegerField { width:2.2em; }
diff --git a/django/contrib/admin/media/js/urlify.js b/django/contrib/admin/media/js/urlify.js
index 90d11c435a..9b87113628 100644
--- a/django/contrib/admin/media/js/urlify.js
+++ b/django/contrib/admin/media/js/urlify.js
@@ -7,7 +7,7 @@ function URLify(s, num_chars) {
"with"];
r = new RegExp('\\b(' + removelist.join('|') + ')\\b', 'gi');
s = s.replace(r, '');
- s = s.replace(/[^-A-Z0-9\s]/gi, ''); // remove unneeded chars
+ s = s.replace(/[^-\w\s]/g, ''); // remove unneeded chars
s = s.replace(/^\s+|\s+$/g, ''); // trim leading/trailing spaces
s = s.replace(/[-\s]+/g, '-'); // convert spaces to hyphens
s = s.toLowerCase(); // convert to lowercase
diff --git a/django/contrib/admin/templatetags/admin_list.py b/django/contrib/admin/templatetags/admin_list.py
index 3c0c6f0ac2..5c678fba6f 100644
--- a/django/contrib/admin/templatetags/admin_list.py
+++ b/django/contrib/admin/templatetags/admin_list.py
@@ -84,22 +84,31 @@ def result_headers(cl):
header = attr.short_description
except AttributeError:
header = field_name.replace('_', ' ')
- # Non-field list_display values don't get ordering capability.
- yield {"text": header}
+
+ # It is a non-field, but perhaps one that is sortable
+ if not getattr(getattr(cl.model, field_name), "admin_order_field", None):
+ yield {"text": header}
+ continue
+
+ # So this _is_ a sortable non-field. Go to the yield
+ # after the else clause.
else:
if isinstance(f.rel, models.ManyToOneRel) and f.null:
yield {"text": f.verbose_name}
+ continue
else:
- th_classes = []
- new_order_type = 'asc'
- if field_name == cl.order_field:
- th_classes.append('sorted %sending' % cl.order_type.lower())
- new_order_type = {'asc': 'desc', 'desc': 'asc'}[cl.order_type.lower()]
+ header = f.verbose_name
+
+ th_classes = []
+ new_order_type = 'asc'
+ if field_name == cl.order_field:
+ th_classes.append('sorted %sending' % cl.order_type.lower())
+ new_order_type = {'asc': 'desc', 'desc': 'asc'}[cl.order_type.lower()]
- yield {"text": f.verbose_name,
- "sortable": True,
- "url": cl.get_query_string({ORDER_VAR: i, ORDER_TYPE_VAR: new_order_type}),
- "class_attrib": (th_classes and ' class="%s"' % ' '.join(th_classes) or '')}
+ yield {"text": header,
+ "sortable": True,
+ "url": cl.get_query_string({ORDER_VAR: i, ORDER_TYPE_VAR: new_order_type}),
+ "class_attrib": (th_classes and ' class="%s"' % ' '.join(th_classes) or '')}
def _boolean_icon(field_val):
BOOLEAN_MAPPING = {True: 'yes', False: 'no', None: 'unknown'}
diff --git a/django/contrib/admin/templatetags/admin_modify.py b/django/contrib/admin/templatetags/admin_modify.py
index fcb5876b0c..e708b876bd 100644
--- a/django/contrib/admin/templatetags/admin_modify.py
+++ b/django/contrib/admin/templatetags/admin_modify.py
@@ -11,6 +11,7 @@ import re
register = template.Library()
word_re = re.compile('[A-Z][a-z]+')
+absolute_url_re = re.compile(r'^(?:http(?:s)?:/)?/', re.IGNORECASE)
def class_name_to_underscored(name):
return '_'.join([s.lower() for s in word_re.findall(name)[:-1]])
@@ -18,18 +19,19 @@ def class_name_to_underscored(name):
def include_admin_script(script_path):
"""
Returns an HTML script element for including a script from the admin
- media url.
+ media url (or other location if an absolute url is given).
Example usage::
- {% include_admin_script js/calendar.js %}
+ {% include_admin_script "js/calendar.js" %}
could return::
<script type="text/javascript" src="/media/admin/js/calendar.js">
"""
-
- return '<script type="text/javascript" src="%s%s"></script>' % (settings.ADMIN_MEDIA_PREFIX, script_path)
+ if not absolute_url_re.match(script_path):
+ script_path = '%s%s' % (settings.ADMIN_MEDIA_PREFIX, script_path)
+ return '<script type="text/javascript" src="%s"></script>' % script_path
include_admin_script = register.simple_tag(include_admin_script)
def submit_row(context):
diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py
index 282038e205..0e962adf18 100644
--- a/django/contrib/admin/views/main.py
+++ b/django/contrib/admin/views/main.py
@@ -461,9 +461,12 @@ 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
- rel_objs = getattr(obj, rel_opts_name, None)
- if rel_objs:
- has_related_objs = True
+
+ # related.get_accessor_name() could return None for symmetrical relationships
+ if rel_opts_name:
+ rel_objs = getattr(obj, rel_opts_name, None)
+ if rel_objs:
+ has_related_objs = True
if has_related_objs:
for sub_obj in rel_objs.all():
@@ -655,10 +658,17 @@ class ChangeList(object):
order_field, order_type = ordering[0], 'asc'
if params.has_key(ORDER_VAR):
try:
+ field_name = lookup_opts.admin.list_display[int(params[ORDER_VAR])]
try:
- f = lookup_opts.get_field(lookup_opts.admin.list_display[int(params[ORDER_VAR])])
+ f = lookup_opts.get_field(field_name)
except models.FieldDoesNotExist:
- pass
+ # see if field_name is a name of a non-field
+ # that allows sorting
+ try:
+ attr = getattr(lookup_opts.admin.manager.model, field_name)
+ order_field = attr.admin_order_field
+ except IndexError:
+ pass
else:
if not isinstance(f.rel, models.ManyToOneRel) or not f.null:
order_field = f.name
diff --git a/django/contrib/auth/forms.py b/django/contrib/auth/forms.py
index 7700ec7d7a..023f9b43be 100644
--- a/django/contrib/auth/forms.py
+++ b/django/contrib/auth/forms.py
@@ -4,6 +4,7 @@ from django.contrib.sites.models import Site
from django.template import Context, loader
from django.core import validators
from django import oldforms
+from django.utils.translation import gettext as _
class UserCreationForm(oldforms.Manipulator):
"A form that creates a user, with no privileges, from the given username and password."
diff --git a/django/contrib/localflavor/__init__.py b/django/contrib/localflavor/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/django/contrib/localflavor/__init__.py
diff --git a/django/contrib/localflavor/uk/__init__.py b/django/contrib/localflavor/uk/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/django/contrib/localflavor/uk/__init__.py
diff --git a/django/contrib/localflavor/uk/forms.py b/django/contrib/localflavor/uk/forms.py
new file mode 100644
index 0000000000..ddd033e1e0
--- /dev/null
+++ b/django/contrib/localflavor/uk/forms.py
@@ -0,0 +1,19 @@
+"""
+UK-specific Form helpers
+"""
+
+from django.newforms.fields import RegexField
+from django.utils.translation import gettext
+
+class UKPostcodeField(RegexField):
+ """
+ A form field that validates its input is a UK postcode.
+
+ The regular expression used is sourced from the schema for British Standard
+ BS7666 address types: http://www.govtalk.gov.uk/gdsc/schemas/bs7666-v2-0.xsd
+ """
+ def __init__(self, *args, **kwargs):
+ super(UKPostcodeField, self).__init__(r'^(GIR 0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HIK-Y][0-9](|[0-9]|[ABEHMNPRVWXY]))|[0-9][A-HJKSTUW]) [0-9][ABD-HJLNP-UW-Z]{2})$',
+ max_length=None, min_length=None,
+ error_message=gettext(u'Enter a postcode. A space is required between the two postcode parts.'),
+ *args, **kwargs)
diff --git a/django/contrib/localflavor/usa/__init__.py b/django/contrib/localflavor/usa/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/django/contrib/localflavor/usa/__init__.py
diff --git a/django/contrib/localflavor/usa/forms.py b/django/contrib/localflavor/usa/forms.py
new file mode 100644
index 0000000000..9461f4fe80
--- /dev/null
+++ b/django/contrib/localflavor/usa/forms.py
@@ -0,0 +1,59 @@
+"""
+USA-specific Form helpers
+"""
+
+from django.newforms import ValidationError
+from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES
+from django.newforms.util import smart_unicode
+from django.utils.translation import gettext
+import re
+
+phone_digits_re = re.compile(r'^(?:1-?)?(\d{3})[-\.]?(\d{3})[-\.]?(\d{4})$')
+
+class USZipCodeField(RegexField):
+ def __init__(self, *args, **kwargs):
+ super(USZipCodeField, self).__init__(r'^\d{5}(?:-\d{4})?$',
+ max_length=None, min_length=None,
+ error_message=gettext(u'Enter a zip code in the format XXXXX or XXXXX-XXXX.'),
+ *args, **kwargs)
+
+class USPhoneNumberField(Field):
+ def clean(self, value):
+ super(USPhoneNumberField, 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' % (m.group(1), m.group(2), m.group(3))
+ raise ValidationError(u'Phone numbers must be in XXX-XXX-XXXX format.')
+
+class USStateField(Field):
+ """
+ A form field that validates its input is a U.S. state name or abbreviation.
+ It normalizes the input to the standard two-leter postal service
+ abbreviation for the given state.
+ """
+ def clean(self, value):
+ from us_states import STATES_NORMALIZED # relative import
+ super(USStateField, self).clean(value)
+ if value in EMPTY_VALUES:
+ return u''
+ try:
+ value = value.strip().lower()
+ except AttributeError:
+ pass
+ else:
+ try:
+ return STATES_NORMALIZED[value.strip().lower()].decode('ascii')
+ except KeyError:
+ pass
+ raise ValidationError(u'Enter a U.S. state or territory.')
+
+class USStateSelect(Select):
+ """
+ A Select widget that uses a list of U.S. states/territories as its choices.
+ """
+ def __init__(self, attrs=None):
+ from us_states import STATE_CHOICES # relative import
+ super(USStateSelect, self).__init__(attrs, choices=STATE_CHOICES)
diff --git a/django/contrib/localflavor/usa/us_states.py b/django/contrib/localflavor/usa/us_states.py
new file mode 100644
index 0000000000..89124a4b69
--- /dev/null
+++ b/django/contrib/localflavor/usa/us_states.py
@@ -0,0 +1,239 @@
+"""
+A mapping of state misspellings/abbreviations to normalized abbreviations, and
+an alphabetical list of 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.
+"""
+
+STATE_CHOICES = (
+ ('AL', 'Alabama'),
+ ('AK', 'Alaska'),
+ ('AS', 'American Samoa'),
+ ('AZ', 'Arizona'),
+ ('AR', 'Arkansas'),
+ ('CA', 'California'),
+ ('CO', 'Colorado'),
+ ('CT', 'Connecticut'),
+ ('DE', 'Deleware'),
+ ('DC', 'District of Columbia'),
+ ('FM', 'Federated States of Micronesia'),
+ ('FL', 'Florida'),
+ ('GA', 'Georgia'),
+ ('GU', 'Guam'),
+ ('HI', 'Hawaii'),
+ ('ID', 'Idaho'),
+ ('IL', 'Illinois'),
+ ('IN', 'Indiana'),
+ ('IA', 'Iowa'),
+ ('KS', 'Kansas'),
+ ('KY', 'Kentucky'),
+ ('LA', 'Louisiana'),
+ ('ME', 'Maine'),
+ ('MH', 'Marshall Islands'),
+ ('MD', 'Maryland'),
+ ('MA', 'Massachusetts'),
+ ('MI', 'Michigan'),
+ ('MN', 'Minnesota'),
+ ('MS', 'Mississippi'),
+ ('MO', 'Missouri'),
+ ('MT', 'Montana'),
+ ('NE', 'Nebraska'),
+ ('NV', 'Nevada'),
+ ('NH', 'New Hampshire'),
+ ('NJ', 'New Jersey'),
+ ('NM', 'New Mexico'),
+ ('NY', 'New York'),
+ ('NC', 'North Carolina'),
+ ('ND', 'North Dakota'),
+ ('MP', 'Northern Mariana Islands'),
+ ('OH', 'Ohio'),
+ ('OK', 'Oklahoma'),
+ ('OR', 'Oregon'),
+ ('PW', 'Palau'),
+ ('PA', 'Pennsylvania'),
+ ('PR', 'Puerto Rico'),
+ ('RI', 'Rhode Island'),
+ ('SC', 'South Carolina'),
+ ('SD', 'South Dakota'),
+ ('TN', 'Tennessee'),
+ ('TX', 'Texas'),
+ ('UT', 'Utah'),
+ ('VT', 'Vermont'),
+ ('VI', 'Virgin Islands'),
+ ('VA', 'Virginia'),
+ ('WA', 'Washington'),
+ ('WV', 'West Virginia'),
+ ('WI', 'Wisconsin'),
+ ('WY', 'Wyoming'),
+)
+
+STATES_NORMALIZED = {
+ 'ak': 'AK',
+ 'al': 'AL',
+ 'ala': 'AL',
+ 'alabama': 'AL',
+ 'alaska': 'AK',
+ 'american samao': 'AS',
+ 'american samoa': 'AS',
+ 'ar': 'AR',
+ 'ariz': 'AZ',
+ 'arizona': 'AZ',
+ 'ark': 'AR',
+ 'arkansas': 'AR',
+ 'as': 'AS',
+ 'az': 'AZ',
+ 'ca': 'CA',
+ 'calf': 'CA',
+ 'calif': 'CA',
+ 'california': 'CA',
+ 'co': 'CO',
+ 'colo': 'CO',
+ 'colorado': 'CO',
+ 'conn': 'CT',
+ 'connecticut': 'CT',
+ 'ct': 'CT',
+ 'dc': 'DC',
+ 'de': 'DE',
+ 'del': 'DE',
+ 'delaware': 'DE',
+ 'district of columbia': 'DC',
+ 'federated states of micronesia': 'FM',
+ 'fl': 'FL',
+ 'fla': 'FL',
+ 'florida': 'FL',
+ 'fm': 'FM',
+ 'ga': 'GA',
+ 'georgia': 'GA',
+ 'gu': 'GU',
+ 'guam': 'GU',
+ 'hawaii': 'HI',
+ 'hi': 'HI',
+ 'ia': 'IA',
+ 'id': 'ID',
+ 'idaho': 'ID',
+ 'il': 'IL',
+ 'ill': 'IL',
+ 'illinois': 'IL',
+ 'in': 'IN',
+ 'ind': 'IN',
+ 'indiana': 'IN',
+ 'iowa': 'IA',
+ 'kan': 'KS',
+ 'kans': 'KS',
+ 'kansas': 'KS',
+ 'kentucky': 'KY',
+ 'ks': 'KS',
+ 'ky': 'KY',
+ 'la': 'LA',
+ 'louisiana': 'LA',
+ 'ma': 'MA',
+ 'maine': 'ME',
+ 'marianas islands': 'MP',
+ 'marianas islands of the pacific': 'MP',
+ 'marinas islands of the pacific': 'MP',
+ 'maryland': 'MD',
+ 'mass': 'MA',
+ 'massachusetts': 'MA',
+ 'massachussetts': 'MA',
+ 'md': 'MD',
+ 'me': 'ME',
+ 'mi': 'MI',
+ 'mich': 'MI',
+ 'michigan': 'MI',
+ 'micronesia': 'FM',
+ 'minn': 'MN',
+ 'minnesota': 'MN',
+ 'miss': 'MS',
+ 'mississippi': 'MS',
+ 'missouri': 'MO',
+ 'mn': 'MN',
+ 'mo': 'MO',
+ 'mont': 'MT',
+ 'montana': 'MT',
+ 'mp': 'MP',
+ 'ms': 'MS',
+ 'mt': 'MT',
+ 'n d': 'ND',
+ 'n dak': 'ND',
+ 'n h': 'NH',
+ 'n j': 'NJ',
+ 'n m': 'NM',
+ 'n mex': 'NM',
+ 'nc': 'NC',
+ 'nd': 'ND',
+ 'ne': 'NE',
+ 'neb': 'NE',
+ 'nebr': 'NE',
+ 'nebraska': 'NE',
+ 'nev': 'NV',
+ 'nevada': 'NV',
+ 'new hampshire': 'NH',
+ 'new jersey': 'NJ',
+ 'new mexico': 'NM',
+ 'new york': 'NY',
+ 'nh': 'NH',
+ 'nj': 'NJ',
+ 'nm': 'NM',
+ 'nmex': 'NM',
+ 'north carolina': 'NC',
+ 'north dakota': 'ND',
+ 'northern mariana islands': 'MP',
+ 'nv': 'NV',
+ 'ny': 'NY',
+ 'oh': 'OH',
+ 'ohio': 'OH',
+ 'ok': 'OK',
+ 'okla': 'OK',
+ 'oklahoma': 'OK',
+ 'or': 'OR',
+ 'ore': 'OR',
+ 'oreg': 'OR',
+ 'oregon': 'OR',
+ 'pa': 'PA',
+ 'penn': 'PA',
+ 'pennsylvania': 'PA',
+ 'pr': 'PR',
+ 'puerto rico': 'PR',
+ 'rhode island': 'RI',
+ 'ri': 'RI',
+ 's dak': 'SD',
+ 'sc': 'SC',
+ 'sd': 'SD',
+ 'sdak': 'SD',
+ 'south carolina': 'SC',
+ 'south dakota': 'SD',
+ 'tenn': 'TN',
+ 'tennessee': 'TN',
+ 'territory of hawaii': 'HI',
+ 'tex': 'TX',
+ 'texas': 'TX',
+ 'tn': 'TN',
+ 'tx': 'TX',
+ 'us virgin islands': 'VI',
+ 'usvi': 'VI',
+ 'ut': 'UT',
+ 'utah': 'UT',
+ 'va': 'VA',
+ 'vermont': 'VT',
+ 'vi': 'VI',
+ 'viginia': 'VA',
+ 'virgin islands': 'VI',
+ 'virgina': 'VA',
+ 'virginia': 'VA',
+ 'vt': 'VT',
+ 'w va': 'WV',
+ 'wa': 'WA',
+ 'wash': 'WA',
+ 'washington': 'WA',
+ 'west virginia': 'WV',
+ 'wi': 'WI',
+ 'wis': 'WI',
+ 'wisc': 'WI',
+ 'wisconsin': 'WI',
+ 'wv': 'WV',
+ 'wva': 'WV',
+ 'wy': 'WY',
+ 'wyo': 'WY',
+ 'wyoming': 'WY',
+}
diff --git a/django/contrib/sessions/middleware.py b/django/contrib/sessions/middleware.py
index 728caa7e19..c134a9c9cf 100644
--- a/django/contrib/sessions/middleware.py
+++ b/django/contrib/sessions/middleware.py
@@ -10,6 +10,7 @@ TEST_COOKIE_VALUE = 'worked'
class SessionWrapper(object):
def __init__(self, session_key):
self.session_key = session_key
+ self.accessed = False
self.modified = False
def __contains__(self, key):
@@ -46,6 +47,7 @@ class SessionWrapper(object):
def _get_session(self):
# Lazily loads session from storage.
+ self.accessed = True
try:
return self._session_cache
except AttributeError:
@@ -72,12 +74,14 @@ class SessionMiddleware(object):
def process_response(self, request, response):
# If request.session was modified, or if response.session was set, save
# those changes and set a session cookie.
- patch_vary_headers(response, ('Cookie',))
try:
+ accessed = request.session.accessed
modified = request.session.modified
except AttributeError:
pass
else:
+ if accessed:
+ patch_vary_headers(response, ('Cookie',))
if modified or settings.SESSION_SAVE_EVERY_REQUEST:
session_key = request.session.session_key or Session.objects.get_new_session_key()
if settings.SESSION_EXPIRE_AT_BROWSER_CLOSE:
diff --git a/django/contrib/syndication/feeds.py b/django/contrib/syndication/feeds.py
index 119615a0b9..cdb4e8170f 100644
--- a/django/contrib/syndication/feeds.py
+++ b/django/contrib/syndication/feeds.py
@@ -78,6 +78,7 @@ class Feed(object):
author_link = self.__get_dynamic_attr('author_link', obj),
author_email = self.__get_dynamic_attr('author_email', obj),
categories = self.__get_dynamic_attr('categories', obj),
+ feed_copyright = self.__get_dynamic_attr('feed_copyright', obj),
)
try:
@@ -116,5 +117,6 @@ class Feed(object):
author_email = author_email,
author_link = author_link,
categories = self.__get_dynamic_attr('item_categories', item),
+ item_copyright = self.__get_dynamic_attr('item_copyright', item),
)
return feed
diff --git a/django/core/mail.py b/django/core/mail.py
index a5af6e610f..b9966c2af0 100644
--- a/django/core/mail.py
+++ b/django/core/mail.py
@@ -3,12 +3,24 @@
from django.conf import settings
from email.MIMEText import MIMEText
from email.Header import Header
-import smtplib, rfc822
+from email.Utils import formatdate
+import smtplib
import socket
import time
import random
-DNS_NAME = socket.getfqdn() # Cache the hostname
+# 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):
+ def __str__(self):
+ return self.get_fqdn()
+
+ def get_fqdn(self):
+ if not hasattr(self, '_fqdn'):
+ self._fqdn = socket.getfqdn()
+ return self._fqdn
+
+DNS_NAME = CachedDnsName()
class BadHeaderError(ValueError):
pass
@@ -22,21 +34,34 @@ class SafeMIMEText(MIMEText):
val = Header(val, settings.DEFAULT_CHARSET)
MIMEText.__setitem__(self, name, val)
-def send_mail(subject, message, from_email, recipient_list, fail_silently=False, auth_user=settings.EMAIL_HOST_USER, auth_password=settings.EMAIL_HOST_PASSWORD):
+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
of the recipient list will see the other recipients in the 'To' field.
+
+ If auth_user is None, the EMAIL_HOST_USER setting is used.
+ If auth_password is None, the EMAIL_HOST_PASSWORD setting is used.
"""
+ 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)
-def send_mass_mail(datatuple, fail_silently=False, auth_user=settings.EMAIL_HOST_USER, auth_password=settings.EMAIL_HOST_PASSWORD):
+def send_mass_mail(datatuple, fail_silently=False, auth_user=None, auth_password=None):
"""
Given a datatuple of (subject, message, from_email, recipient_list), sends
each message to each recipient list. Returns the number of e-mails sent.
If from_email is None, the DEFAULT_FROM_EMAIL setting is used.
If 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.
"""
+ 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:
@@ -54,7 +79,7 @@ def send_mass_mail(datatuple, fail_silently=False, auth_user=settings.EMAIL_HOST
msg['Subject'] = subject
msg['From'] = from_email
msg['To'] = ', '.join(recipient_list)
- msg['Date'] = rfc822.formatdate()
+ msg['Date'] = formatdate()
try:
random_bits = str(random.getrandbits(64))
except AttributeError: # Python 2.3 doesn't have random.getrandbits().
diff --git a/django/core/management.py b/django/core/management.py
index 10d2532263..97deb58361 100644
--- a/django/core/management.py
+++ b/django/core/management.py
@@ -72,6 +72,25 @@ def _get_table_list():
cursor = connection.cursor()
return get_introspection_module().get_table_list(cursor)
+def _get_sequence_list():
+ "Returns a list of information about all DB sequences for all models in all apps"
+ from django.db import models
+
+ apps = models.get_apps()
+ sequence_list = []
+
+ for app in apps:
+ for model in models.get_models(app):
+ for f in model._meta.fields:
+ if isinstance(f, models.AutoField):
+ sequence_list.append({'table':model._meta.db_table,'column':f.column,})
+ break # Only one AutoField is allowed per model, so don't bother continuing.
+
+ for f in model._meta.many_to_many:
+ sequence_list.append({'table':f.m2m_db_table(),'column':None,})
+
+ return sequence_list
+
# If the foreign key points to an AutoField, a PositiveIntegerField or a
# PositiveSmallIntegerField, the foreign key should be an IntegerField, not the
# referred field type. Otherwise, the foreign key should be the same type of
@@ -172,7 +191,8 @@ def _get_sql_model_create(model, known_models=set()):
if f.rel.to in known_models:
field_output.append(style.SQL_KEYWORD('REFERENCES') + ' ' + \
style.SQL_TABLE(backend.quote_name(f.rel.to._meta.db_table)) + ' (' + \
- style.SQL_FIELD(backend.quote_name(f.rel.to._meta.get_field(f.rel.field_name).column)) + ')'
+ style.SQL_FIELD(backend.quote_name(f.rel.to._meta.get_field(f.rel.field_name).column)) + ')' +
+ backend.get_deferrable_sql()
)
else:
# We haven't yet created the table to which this field
@@ -221,9 +241,10 @@ def _get_sql_for_pending_references(model, pending_references):
table = opts.db_table
col = opts.get_field(f.rel.field_name).column
r_name = '%s_refs_%s_%s_%s' % (r_col, col, r_table, table)
- final_output.append(style.SQL_KEYWORD('ALTER TABLE') + ' %s ADD CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s (%s);' % \
- (backend.quote_name(r_table), truncate_name(r_name, backend.get_max_name_length()),
- backend.quote_name(r_col), backend.quote_name(table), backend.quote_name(col)))
+ final_output.append(style.SQL_KEYWORD('ALTER TABLE') + ' %s ADD CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s (%s)%s;' % \
+ (backend.quote_name(r_table), truncate_name(r_name, backend.get_max_name_length()),
+ backend.quote_name(r_col), backend.quote_name(table), backend.quote_name(col),
+ backend.get_deferrable_sql()))
del pending_references[model]
return final_output
@@ -243,18 +264,20 @@ def _get_many_to_many_sql_for_model(model):
(style.SQL_FIELD(backend.quote_name('id')),
style.SQL_COLTYPE(data_types['AutoField']),
style.SQL_KEYWORD('NOT NULL PRIMARY KEY')))
- table_output.append(' %s %s %s %s (%s),' % \
+ table_output.append(' %s %s %s %s (%s)%s,' % \
(style.SQL_FIELD(backend.quote_name(f.m2m_column_name())),
style.SQL_COLTYPE(data_types[get_rel_data_type(opts.pk)] % opts.pk.__dict__),
style.SQL_KEYWORD('NOT NULL REFERENCES'),
style.SQL_TABLE(backend.quote_name(opts.db_table)),
- style.SQL_FIELD(backend.quote_name(opts.pk.column))))
- table_output.append(' %s %s %s %s (%s),' % \
+ style.SQL_FIELD(backend.quote_name(opts.pk.column)),
+ backend.get_deferrable_sql()))
+ table_output.append(' %s %s %s %s (%s)%s,' % \
(style.SQL_FIELD(backend.quote_name(f.m2m_reverse_name())),
style.SQL_COLTYPE(data_types[get_rel_data_type(f.rel.to._meta.pk)] % f.rel.to._meta.pk.__dict__),
style.SQL_KEYWORD('NOT NULL REFERENCES'),
style.SQL_TABLE(backend.quote_name(f.rel.to._meta.db_table)),
- style.SQL_FIELD(backend.quote_name(f.rel.to._meta.pk.column))))
+ style.SQL_FIELD(backend.quote_name(f.rel.to._meta.pk.column)),
+ backend.get_deferrable_sql()))
table_output.append(' %s (%s, %s)' % \
(style.SQL_KEYWORD('UNIQUE'),
style.SQL_FIELD(backend.quote_name(f.m2m_column_name())),
@@ -352,7 +375,15 @@ def get_sql_reset(app):
get_sql_reset.help_doc = "Prints the DROP TABLE SQL, then the CREATE TABLE SQL, for the given app name(s)."
get_sql_reset.args = APP_ARGS
-def get_sql_initial_data_for_model(model):
+def get_sql_flush():
+ "Returns a list of the SQL statements used to flush the database"
+ from django.db import backend
+ statements = backend.get_sql_flush(style, _get_table_list(), _get_sequence_list())
+ return statements
+get_sql_flush.help_doc = "Returns a list of the SQL statements required to return all tables in the database to the state they were in just after they were installed."
+get_sql_flush.args = ''
+
+def get_custom_sql_for_model(model):
from django.db import models
from django.conf import settings
@@ -379,8 +410,8 @@ def get_sql_initial_data_for_model(model):
return output
-def get_sql_initial_data(app):
- "Returns a list of the initial INSERT SQL statements for the given app."
+def get_custom_sql(app):
+ "Returns a list of the custom table modifying SQL statements for the given app."
from django.db.models import get_models
output = []
@@ -388,11 +419,17 @@ def get_sql_initial_data(app):
app_dir = os.path.normpath(os.path.join(os.path.dirname(app.__file__), 'sql'))
for model in app_models:
- output.extend(get_sql_initial_data_for_model(model))
+ output.extend(get_custom_sql_for_model(model))
return output
-get_sql_initial_data.help_doc = "Prints the initial INSERT SQL statements for the given app name(s)."
-get_sql_initial_data.args = APP_ARGS
+get_custom_sql.help_doc = "Prints the custom table modifying SQL statements for the given app name(s)."
+get_custom_sql.args = APP_ARGS
+
+def get_sql_initial_data(apps):
+ "Returns a list of the initial INSERT SQL statements for the given app."
+ return style.ERROR("This action has been renamed. Try './manage.py sqlcustom %s'." % ' '.join(apps and apps or ['app1', 'app2']))
+get_sql_initial_data.help_doc = "RENAMED: see 'sqlcustom'"
+get_sql_initial_data.args = ''
def get_sql_sequence_reset(app):
"Returns a list of the SQL statements to reset PostgreSQL sequences for the given app."
@@ -451,16 +488,26 @@ def get_sql_indexes_for_model(model):
def get_sql_all(app):
"Returns a list of CREATE TABLE SQL, initial-data inserts, and CREATE INDEX SQL for the given module."
- return get_sql_create(app) + get_sql_initial_data(app) + get_sql_indexes(app)
+ return get_sql_create(app) + get_custom_sql(app) + get_sql_indexes(app)
get_sql_all.help_doc = "Prints the CREATE TABLE, initial-data and CREATE INDEX SQL statements for the given model module name(s)."
get_sql_all.args = APP_ARGS
+def _emit_post_sync_signal(created_models, verbosity, interactive):
+ from django.db import models
+ from django.dispatch import dispatcher
+ # Emit the post_sync signal for every application.
+ for app in models.get_apps():
+ app_name = app.__name__.split('.')[-2]
+ if verbosity >= 2:
+ print "Running post-sync handlers for application", app_name
+ dispatcher.send(signal=models.signals.post_syncdb, sender=app,
+ app=app, created_models=created_models,
+ verbosity=verbosity, interactive=interactive)
+
def syncdb(verbosity=1, interactive=True):
"Creates the database tables for all apps in INSTALLED_APPS whose tables haven't already been created."
from django.db import backend, connection, transaction, models, get_creation_module
- from django.db.models import signals
from django.conf import settings
- from django.dispatch import dispatcher
disable_termcolors()
@@ -526,27 +573,22 @@ def syncdb(verbosity=1, interactive=True):
# Send the post_syncdb signal, so individual apps can do whatever they need
# to do at this point.
- for app in models.get_apps():
- app_name = app.__name__.split('.')[-2]
- if verbosity >= 2:
- print "Running post-sync handlers for application", app_name
- dispatcher.send(signal=signals.post_syncdb, sender=app,
- app=app, created_models=created_models,
- verbosity=verbosity, interactive=interactive)
+ _emit_post_sync_signal(created_models, verbosity, interactive)
- # Install initial data for the app (but only if this is a model we've
- # just created)
+ # Install custom SQL for the app (but only if this
+ # is a model we've just created)
+ for app in models.get_apps():
for model in models.get_models(app):
if model in created_models:
- initial_sql = get_sql_initial_data_for_model(model)
- if initial_sql:
+ custom_sql = get_custom_sql_for_model(model)
+ if custom_sql:
if verbosity >= 1:
- print "Installing initial data for %s.%s model" % (app_name, model._meta.object_name)
+ print "Installing custom SQL for %s.%s model" % (app_name, model._meta.object_name)
try:
- for sql in initial_sql:
+ for sql in custom_sql:
cursor.execute(sql)
except Exception, e:
- sys.stderr.write("Failed to install initial SQL data for %s.%s model: %s" % \
+ sys.stderr.write("Failed to install custom SQL for %s.%s model: %s" % \
(app_name, model._meta.object_name, e))
transaction.rollback_unless_managed()
else:
@@ -571,7 +613,10 @@ def syncdb(verbosity=1, interactive=True):
else:
transaction.commit_unless_managed()
-syncdb.args = ''
+ # Install the 'initialdata' fixture, using format discovery
+ load_data(['initial_data'], verbosity=verbosity)
+syncdb.help_doc = "Create the database tables for all apps in INSTALLED_APPS whose tables haven't already been created."
+syncdb.args = '[--verbosity] [--interactive]'
def get_admin_index(app):
"Returns admin-index template snippet (in list form) for the given app."
@@ -624,36 +669,6 @@ def diffsettings():
print '\n'.join(output)
diffsettings.args = ""
-def install(app):
- "Executes the equivalent of 'get_sql_all' in the current database."
- from django.db import connection, transaction
-
- app_name = app.__name__.split('.')[-2]
-
- disable_termcolors()
-
- # First, try validating the models.
- _check_for_validation_errors(app)
-
- sql_list = get_sql_all(app)
-
- try:
- cursor = connection.cursor()
- for sql in sql_list:
- cursor.execute(sql)
- except Exception, e:
- sys.stderr.write(style.ERROR("""Error: %s couldn't be installed. Possible reasons:
- * The database isn't running or isn't configured correctly.
- * At least one of the database tables already exists.
- * The SQL was invalid.
-Hint: Look at the output of 'django-admin.py sqlall %s'. That's the SQL this command wasn't able to run.
-The full error: """ % (app_name, app_name)) + style.ERROR_OUTPUT(str(e)) + '\n')
- transaction.rollback_unless_managed()
- sys.exit(1)
- transaction.commit_unless_managed()
-install.help_doc = "Executes ``sqlall`` for the given app(s) in the current database."
-install.args = APP_ARGS
-
def reset(app, interactive=True):
"Executes the equivalent of 'get_sql_reset' in the current database."
from django.db import connection, transaction
@@ -695,7 +710,68 @@ The full error: """ % (app_name, app_name)) + style.ERROR_OUTPUT(str(e)) + '\n')
else:
print "Reset cancelled."
reset.help_doc = "Executes ``sqlreset`` for the given app(s) in the current database."
-reset.args = APP_ARGS
+reset.args = '[--interactive]' + APP_ARGS
+
+def flush(verbosity=1, interactive=True):
+ "Returns all tables in the database to the same state they were in immediately after syncdb."
+ from django.conf import settings
+ from django.db import connection, transaction, models
+ from django.dispatch import dispatcher
+
+ disable_termcolors()
+
+ # First, try validating the models.
+ _check_for_validation_errors()
+
+ # Import the 'management' module within each installed app, to register
+ # dispatcher events.
+ for app_name in settings.INSTALLED_APPS:
+ try:
+ __import__(app_name + '.management', {}, {}, [''])
+ except ImportError:
+ pass
+
+ sql_list = get_sql_flush()
+
+ if interactive:
+ confirm = raw_input("""
+You have requested a flush of the database.
+This will IRREVERSIBLY DESTROY all data currently in the database,
+and return each table to the state it was in after syncdb.
+Are you sure you want to do this?
+
+Type 'yes' to continue, or 'no' to cancel: """)
+ else:
+ confirm = 'yes'
+
+ if confirm == 'yes':
+ try:
+ cursor = connection.cursor()
+ for sql in sql_list:
+ cursor.execute(sql)
+ except Exception, e:
+ sys.stderr.write(style.ERROR("""Error: Database %s couldn't be flushed. Possible reasons:
+ * The database isn't running or isn't configured correctly.
+ * At least one of the expected database tables doesn't exist.
+ * The SQL was invalid.
+Hint: Look at the output of 'django-admin.py sqlflush'. That's the SQL this command wasn't able to run.
+The full error: """ % settings.DATABASE_NAME + style.ERROR_OUTPUT(str(e)) + '\n'))
+ transaction.rollback_unless_managed()
+ sys.exit(1)
+ transaction.commit_unless_managed()
+
+ # Emit the post sync signal. This allows individual
+ # applications to respond as if the database had been
+ # sync'd from scratch.
+ _emit_post_sync_signal(models.get_models(), verbosity, interactive)
+
+ # Reinstall the initial_data fixture
+ load_data(['initial_data'], verbosity=verbosity)
+
+ else:
+ print "Flush cancelled."
+flush.help_doc = "Executes ``sqlflush`` on the current database."
+flush.args = '[--verbosity] [--interactive]'
def _start_helper(app_or_project, name, directory, other_name=''):
other = {'project': 'app', 'app': 'project'}[app_or_project]
@@ -778,7 +854,7 @@ def inspectdb():
yield "# * Make sure each model has one field with primary_key=True"
yield "# Feel free to rename the models, but don't rename db_table values or field names."
yield "#"
- yield "# Also note: You'll have to insert the output of 'django-admin.py sqlinitialdata [appname]'"
+ yield "# Also note: You'll have to insert the output of 'django-admin.py sqlcustom [appname]'"
yield "# into your database."
yield ''
yield 'from django.db import models'
@@ -1201,6 +1277,11 @@ createcachetable.args = "[tablename]"
def run_shell(use_plain=False):
"Runs a Python interactive interpreter. Tries to use IPython, if it's available."
+ # XXX: (Temporary) workaround for ticket #1796: force early loading of all
+ # models from installed apps.
+ from django.db.models.loading import get_models
+ loaded_models = get_models()
+
try:
if use_plain:
# Don't bother loading IPython, because the user wants plain Python.
@@ -1262,10 +1343,132 @@ def test(app_labels, verbosity=1):
test_module = __import__(test_module_name, {}, {}, test_path[-1])
test_runner = getattr(test_module, test_path[-1])
- test_runner(app_list, verbosity)
+ failures = test_runner(app_list, verbosity)
+ if failures:
+ sys.exit(failures)
+
test.help_doc = 'Runs the test suite for the specified applications, or the entire site if no apps are specified'
test.args = '[--verbosity] ' + APP_ARGS
+def load_data(fixture_labels, verbosity=1):
+ "Installs the provided fixture file(s) as data in the database."
+ from django.db.models import get_apps
+ from django.core import serializers
+ from django.db import connection, transaction
+ from django.conf import settings
+ import sys
+
+ # Keep a count of the installed objects and fixtures
+ count = [0,0]
+
+ humanize = lambda dirname: dirname and "'%s'" % dirname or 'absolute path'
+
+ # Get a cursor (even though we don't need one yet). This has
+ # the side effect of initializing the test database (if
+ # it isn't already initialized).
+ cursor = connection.cursor()
+
+ # Start transaction management. All fixtures are installed in a
+ # single transaction to ensure that all references are resolved.
+ transaction.commit_unless_managed()
+ transaction.enter_transaction_management()
+ transaction.managed(True)
+
+ app_fixtures = [os.path.join(os.path.dirname(app.__file__),'fixtures') for app in get_apps()]
+ for fixture_label in fixture_labels:
+ if verbosity > 0:
+ print "Loading '%s' fixtures..." % fixture_label
+ for fixture_dir in app_fixtures + list(settings.FIXTURE_DIRS) + ['']:
+ if verbosity > 1:
+ print "Checking %s for fixtures..." % humanize(fixture_dir)
+ parts = fixture_label.split('.')
+ if len(parts) == 1:
+ fixture_name = fixture_label
+ formats = serializers.get_serializer_formats()
+ else:
+ fixture_name, format = '.'.join(parts[:-1]), parts[-1]
+ formats = [format]
+
+ label_found = False
+ for format in formats:
+ serializer = serializers.get_serializer(format)
+ if verbosity > 1:
+ print "Trying %s for %s fixture '%s'..." % \
+ (humanize(fixture_dir), format, fixture_name)
+ try:
+ full_path = os.path.join(fixture_dir, '.'.join([fixture_name, format]))
+ fixture = open(full_path, 'r')
+ if label_found:
+ fixture.close()
+ print style.ERROR("Multiple fixtures named '%s' in %s. Aborting." %
+ (fixture_name, humanize(fixture_dir)))
+ transaction.rollback()
+ transaction.leave_transaction_management()
+ return
+ else:
+ count[1] += 1
+ if verbosity > 0:
+ print "Installing %s fixture '%s' from %s." % \
+ (format, fixture_name, humanize(fixture_dir))
+ try:
+ objects = serializers.deserialize(format, fixture)
+ for obj in objects:
+ count[0] += 1
+ obj.save()
+ label_found = True
+ except Exception, e:
+ fixture.close()
+ sys.stderr.write(
+ style.ERROR("Problem installing fixture '%s': %s\n" %
+ (full_path, str(e))))
+ transaction.rollback()
+ transaction.leave_transaction_management()
+ return
+ fixture.close()
+ except:
+ if verbosity > 1:
+ print "No %s fixture '%s' in %s." % \
+ (format, fixture_name, humanize(fixture_dir))
+ if count[0] == 0:
+ if verbosity > 0:
+ print "No fixtures found."
+ else:
+ if verbosity > 0:
+ print "Installed %d object(s) from %d fixture(s)" % tuple(count)
+ transaction.commit()
+ transaction.leave_transaction_management()
+
+load_data.help_doc = 'Installs the named fixture(s) in the database'
+load_data.args = "[--verbosity] fixture, fixture, ..."
+
+def dump_data(app_labels, format='json', indent=None):
+ "Output the current contents of the database as a fixture of the given format"
+ from django.db.models import get_app, get_apps, get_models
+ from django.core import serializers
+
+ if len(app_labels) == 0:
+ app_list = get_apps()
+ else:
+ app_list = [get_app(app_label) for app_label in app_labels]
+
+ # Check that the serialization format exists; this is a shortcut to
+ # avoid collating all the objects and _then_ failing.
+ try:
+ serializers.get_serializer(format)
+ except KeyError:
+ sys.stderr.write(style.ERROR("Unknown serialization format: %s\n" % format))
+
+ objects = []
+ for app in app_list:
+ for model in get_models(app):
+ objects.extend(model.objects.all())
+ try:
+ print serializers.serialize(format, objects, indent=indent)
+ except Exception, e:
+ sys.stderr.write(style.ERROR("Unable to serialize database: %s\n" % e))
+dump_data.help_doc = 'Output the contents of the database as a fixture of the given format'
+dump_data.args = '[--format]' + APP_ARGS
+
# Utilities for command-line script
DEFAULT_ACTION_MAPPING = {
@@ -1273,8 +1476,10 @@ DEFAULT_ACTION_MAPPING = {
'createcachetable' : createcachetable,
'dbshell': dbshell,
'diffsettings': diffsettings,
+ 'dumpdata': dump_data,
+ 'flush': flush,
'inspectdb': inspectdb,
- 'install': install,
+ 'loaddata': load_data,
'reset': reset,
'runfcgi': runfcgi,
'runserver': runserver,
@@ -1282,6 +1487,8 @@ DEFAULT_ACTION_MAPPING = {
'sql': get_sql_create,
'sqlall': get_sql_all,
'sqlclear': get_sql_delete,
+ 'sqlcustom': get_custom_sql,
+ 'sqlflush': get_sql_flush,
'sqlindexes': get_sql_indexes,
'sqlinitialdata': get_sql_initial_data,
'sqlreset': get_sql_reset,
@@ -1298,7 +1505,6 @@ NO_SQL_TRANSACTION = (
'createcachetable',
'dbshell',
'diffsettings',
- 'install',
'reset',
'sqlindexes',
'syncdb',
@@ -1345,6 +1551,10 @@ def execute_from_command_line(action_mapping=DEFAULT_ACTION_MAPPING, argv=None):
help='Tells Django to NOT prompt the user for input of any kind.')
parser.add_option('--noreload', action='store_false', dest='use_reloader', default=True,
help='Tells Django to NOT use the auto-reloader when running the development server.')
+ parser.add_option('--format', default='json', dest='format',
+ help='Specifies the output serialization format for fixtures')
+ parser.add_option('--indent', default=None, dest='indent',
+ type='int', help='Specifies the indent level to use when pretty-printing output')
parser.add_option('--verbosity', action='store', dest='verbosity', default='1',
type='choice', choices=['0', '1', '2'],
help='Verbosity level; 0=minimal output, 1=normal output, 2=all output'),
@@ -1378,7 +1588,7 @@ def execute_from_command_line(action_mapping=DEFAULT_ACTION_MAPPING, argv=None):
action_mapping[action](options.plain is True)
elif action in ('validate', 'diffsettings', 'dbshell'):
action_mapping[action]()
- elif action == 'syncdb':
+ elif action in ('flush', 'syncdb'):
action_mapping[action](int(options.verbosity), options.interactive)
elif action == 'inspectdb':
try:
@@ -1392,11 +1602,16 @@ def execute_from_command_line(action_mapping=DEFAULT_ACTION_MAPPING, argv=None):
action_mapping[action](args[1])
except IndexError:
parser.print_usage_and_exit()
- elif action == 'test':
+ elif action in ('test', 'loaddata'):
try:
action_mapping[action](args[1:], int(options.verbosity))
except IndexError:
parser.print_usage_and_exit()
+ elif action == 'dumpdata':
+ try:
+ action_mapping[action](args[1:], options.format, options.indent)
+ except IndexError:
+ parser.print_usage_and_exit()
elif action in ('startapp', 'startproject'):
try:
name = args[1]
@@ -1415,6 +1630,10 @@ def execute_from_command_line(action_mapping=DEFAULT_ACTION_MAPPING, argv=None):
action_mapping[action](addr, port, options.use_reloader, options.admin_media_path)
elif action == 'runfcgi':
action_mapping[action](args[1:])
+ elif action == 'sqlinitialdata':
+ print action_mapping[action](args[1:])
+ elif action == 'sqlflush':
+ print '\n'.join(action_mapping[action]())
else:
from django.db import models
validate(silent_success=True)
diff --git a/django/core/serializers/__init__.py b/django/core/serializers/__init__.py
index a1268321f2..f20258c416 100644
--- a/django/core/serializers/__init__.py
+++ b/django/core/serializers/__init__.py
@@ -40,6 +40,11 @@ def get_serializer(format):
if not _serializers:
_load_serializers()
return _serializers[format].Serializer
+
+def get_serializer_formats():
+ if not _serializers:
+ _load_serializers()
+ return _serializers.keys()
def get_deserializer(format):
if not _serializers:
diff --git a/django/core/serializers/base.py b/django/core/serializers/base.py
index 5b0acdc480..0ec05d1cf3 100644
--- a/django/core/serializers/base.py
+++ b/django/core/serializers/base.py
@@ -141,7 +141,7 @@ class Deserializer(object):
class DeserializedObject(object):
"""
- A deserialzed model.
+ A deserialized model.
Basically a container for holding the pre-saved deserialized data along
with the many-to-many data saved with the object.
diff --git a/django/core/serializers/python.py b/django/core/serializers/python.py
index 1e1e6f4bec..a9baa01d5a 100644
--- a/django/core/serializers/python.py
+++ b/django/core/serializers/python.py
@@ -67,20 +67,19 @@ def Deserializer(object_list, **options):
field = Model._meta.get_field(field_name)
- # Handle M2M relations (with in_bulk() for performance)
+ # Handle M2M relations
if field.rel and isinstance(field.rel, models.ManyToManyRel):
pks = []
for pk in field_value:
if isinstance(pk, unicode):
- pk = pk.encode(options.get("encoding", settings.DEFAULT_CHARSET))
- m2m_data[field.name] = field.rel.to._default_manager.in_bulk(field_value).values()
+ pks.append(pk.encode(options.get("encoding", settings.DEFAULT_CHARSET)))
+ else:
+ pks.append(pk)
+ m2m_data[field.name] = pks
# Handle FK fields
- elif field.rel and isinstance(field.rel, models.ManyToOneRel) and field_value is not None:
- try:
- data[field.name] = field.rel.to._default_manager.get(pk=field_value)
- except field.rel.to.DoesNotExist:
- data[field.name] = None
+ elif field.rel and isinstance(field.rel, models.ManyToOneRel):
+ data[field.attname] = field_value
# Handle all other fields
else:
diff --git a/django/core/serializers/xml_serializer.py b/django/core/serializers/xml_serializer.py
index 512b8c6176..8fa7bbfac9 100644
--- a/django/core/serializers/xml_serializer.py
+++ b/django/core/serializers/xml_serializer.py
@@ -150,7 +150,7 @@ class Deserializer(base.Deserializer):
if field.rel and isinstance(field.rel, models.ManyToManyRel):
m2m_data[field.name] = self._handle_m2m_field_node(field_node)
elif field.rel and isinstance(field.rel, models.ManyToOneRel):
- data[field.name] = self._handle_fk_field_node(field_node)
+ data[field.attname] = self._handle_fk_field_node(field_node)
else:
value = field.to_python(getInnerText(field_node).strip().encode(self.encoding))
data[field.name] = value
@@ -162,27 +162,17 @@ class Deserializer(base.Deserializer):
"""
Handle a <field> node for a ForeignKey
"""
- # Try to set the foreign key by looking up the foreign related object.
- # If it doesn't exist, set the field to None (which might trigger
- # validation error, but that's expected).
- RelatedModel = self._get_model_from_node(node, "to")
# Check if there is a child node named 'None', returning None if so.
if len(node.childNodes) == 1 and node.childNodes[0].nodeName == 'None':
return None
else:
- return RelatedModel.objects.get(pk=getInnerText(node).strip().encode(self.encoding))
+ return getInnerText(node).strip().encode(self.encoding)
def _handle_m2m_field_node(self, node):
"""
Handle a <field> node for a ManyToManyField
"""
- # Load the related model
- RelatedModel = self._get_model_from_node(node, "to")
-
- # Look up all the related objects. Using the in_bulk() lookup ensures
- # that missing related objects don't cause an exception
- related_ids = [c.getAttribute("pk").encode(self.encoding) for c in node.getElementsByTagName("object")]
- return RelatedModel._default_manager.in_bulk(related_ids).values()
+ return [c.getAttribute("pk").encode(self.encoding) for c in node.getElementsByTagName("object")]
def _get_model_from_node(self, node, attr):
"""
diff --git a/django/core/urlresolvers.py b/django/core/urlresolvers.py
index 93c9c30cca..3f1004c4fb 100644
--- a/django/core/urlresolvers.py
+++ b/django/core/urlresolvers.py
@@ -16,7 +16,7 @@ class Resolver404(Http404):
class NoReverseMatch(Exception):
# Don't make this raise an error when used in a template.
- silent_variable_failure = True
+ silent_variable_failure = True
def get_mod_func(callback):
# Converts 'django.views.news.stories.story_detail' to
@@ -110,7 +110,7 @@ class RegexURLPattern(object):
kwargs = match.groupdict()
if kwargs:
args = ()
- if not kwargs:
+ else:
args = match.groups()
# In both cases, pass any extra_kwargs as **kwargs.
kwargs.update(self.default_args)
diff --git a/django/core/validators.py b/django/core/validators.py
index a2f3dc3bc3..ebfbd3961e 100644
--- a/django/core/validators.py
+++ b/django/core/validators.py
@@ -312,11 +312,12 @@ class RequiredIfOtherFieldGiven(RequiredIfOtherFieldsGiven):
RequiredIfOtherFieldsGiven.__init__(self, [other_field_name], error_message)
class RequiredIfOtherFieldEquals(object):
- def __init__(self, other_field, other_value, error_message=None):
+ def __init__(self, other_field, other_value, error_message=None, other_label=None):
self.other_field = other_field
self.other_value = other_value
+ other_label = other_label or other_value
self.error_message = error_message or lazy_inter(gettext_lazy("This field must be given if %(field)s is %(value)s"), {
- 'field': other_field, 'value': other_value})
+ 'field': other_field, 'value': other_label})
self.always_test = True
def __call__(self, field_data, all_data):
@@ -324,11 +325,12 @@ class RequiredIfOtherFieldEquals(object):
raise ValidationError(self.error_message)
class RequiredIfOtherFieldDoesNotEqual(object):
- def __init__(self, other_field, other_value, error_message=None):
+ def __init__(self, other_field, other_value, other_label=None, error_message=None):
self.other_field = other_field
self.other_value = other_value
+ other_label = other_label or other_value
self.error_message = error_message or lazy_inter(gettext_lazy("This field must be given if %(field)s is not %(value)s"), {
- 'field': other_field, 'value': other_value})
+ 'field': other_field, 'value': other_label})
self.always_test = True
def __call__(self, field_data, all_data):
diff --git a/django/db/backends/ado_mssql/base.py b/django/db/backends/ado_mssql/base.py
index 17c83195c5..34fafe444c 100644
--- a/django/db/backends/ado_mssql/base.py
+++ b/django/db/backends/ado_mssql/base.py
@@ -76,10 +76,11 @@ class DatabaseWrapper(local):
return cursor
def _commit(self):
- return self.connection.commit()
+ if self.connection is not None:
+ return self.connection.commit()
def _rollback(self):
- if self.connection:
+ if self.connection is not None:
return self.connection.rollback()
def close(self):
@@ -132,6 +133,9 @@ def get_limit_offset_sql(limit, offset=None):
def get_random_function_sql():
return "RAND()"
+def get_deferrable_sql():
+ return " DEFERRABLE INITIALLY DEFERRED"
+
def get_fulltext_search_sql(field_name):
raise NotImplementedError
@@ -147,6 +151,19 @@ def get_max_name_length():
def get_autoinc_sql(table):
return None
+def get_sql_flush(sql_styler, full_table_list):
+ """Return a list of SQL statements required to remove all data from
+ all tables in the database (without actually removing the tables
+ themselves) and put the database in an empty 'initial' state
+ """
+ # Return a list of 'TRUNCATE x;', 'TRUNCATE y;', 'TRUNCATE z;'... style SQL statements
+ # TODO - SQL not actually tested against ADO MSSQL yet!
+ # TODO - autoincrement indices reset required? See other get_sql_flush() implementations
+ sql_list = ['%s %s;' % \
+ (sql_styler.SQL_KEYWORD('TRUNCATE'),
+ sql_styler.SQL_FIELD(quote_name(table))
+ ) for table in full_table_list]
+
OPERATOR_MAPPING = {
'exact': '= %s',
'iexact': 'LIKE %s',
diff --git a/django/db/backends/dummy/base.py b/django/db/backends/dummy/base.py
index 5fcdd78a10..bfabc38873 100644
--- a/django/db/backends/dummy/base.py
+++ b/django/db/backends/dummy/base.py
@@ -37,6 +37,9 @@ get_date_extract_sql = complain
get_date_trunc_sql = complain
get_limit_offset_sql = complain
get_random_function_sql = complain
+get_deferrable_sql = complain
get_fulltext_search_sql = complain
get_drop_foreignkey_sql = complain
+get_sql_flush = complain
+
OPERATOR_MAPPING = {}
diff --git a/django/db/backends/mysql/base.py b/django/db/backends/mysql/base.py
index 650da4faca..65070eb6c4 100644
--- a/django/db/backends/mysql/base.py
+++ b/django/db/backends/mysql/base.py
@@ -108,10 +108,11 @@ class DatabaseWrapper(local):
return cursor
def _commit(self):
- self.connection.commit()
+ if self.connection is not None:
+ self.connection.commit()
def _rollback(self):
- if self.connection:
+ if self.connection is not None:
try:
self.connection.rollback()
except Database.NotSupportedError:
@@ -181,6 +182,9 @@ def get_limit_offset_sql(limit, offset=None):
def get_random_function_sql():
return "RAND()"
+def get_deferrable_sql():
+ return ""
+
def get_fulltext_search_sql(field_name):
return 'MATCH (%s) AGAINST (%%s IN BOOLEAN MODE)' % field_name
@@ -196,6 +200,36 @@ def get_max_name_length():
def get_autoinc_sql(table):
return None
+def get_sql_flush(style, tables, sequences):
+ """Return a list of SQL statements required to remove all data from
+ all tables in the database (without actually removing the tables
+ themselves) and put the database in an empty 'initial' state
+
+ """
+ # NB: The generated SQL below is specific to MySQL
+ # 'TRUNCATE x;', 'TRUNCATE y;', 'TRUNCATE z;'... style SQL statements
+ # to clear all tables of all data
+ if tables:
+ sql = ['SET FOREIGN_KEY_CHECKS = 0;'] + \
+ ['%s %s;' % \
+ (style.SQL_KEYWORD('TRUNCATE'),
+ style.SQL_FIELD(quote_name(table))
+ ) for table in tables] + \
+ ['SET FOREIGN_KEY_CHECKS = 1;']
+
+ # 'ALTER TABLE table AUTO_INCREMENT = 1;'... style SQL statements
+ # to reset sequence indices
+ sql.extend(["%s %s %s %s %s;" % \
+ (style.SQL_KEYWORD('ALTER'),
+ style.SQL_KEYWORD('TABLE'),
+ style.SQL_TABLE(quote_name(sequence['table'])),
+ style.SQL_KEYWORD('AUTO_INCREMENT'),
+ style.SQL_FIELD('= 1'),
+ ) for sequence in sequences])
+ return sql
+ else:
+ return []
+
OPERATOR_MAPPING = {
'exact': '= %s',
'iexact': 'LIKE %s',
diff --git a/django/db/backends/oracle/base.py b/django/db/backends/oracle/base.py
index 4096d0e1e6..759a0a3590 100644
--- a/django/db/backends/oracle/base.py
+++ b/django/db/backends/oracle/base.py
@@ -49,10 +49,15 @@ class DatabaseWrapper(local):
return cursor
def _commit(self):
- self.connection.commit()
+ if self.connection is not None:
+ self.connection.commit()
def _rollback(self):
- self.connection.rollback()
+ if self.connection is not None:
+ try:
+ self.connection.rollback()
+ except Database.NotSupportedError:
+ pass
def close(self):
if self.connection is not None:
@@ -140,6 +145,9 @@ def get_limit_offset_sql(limit, offset=None):
def get_random_function_sql():
return "DBMS_RANDOM.RANDOM"
+def get_deferrable_sql():
+ return " DEFERRABLE INITIALLY DEFERRED"
+
def get_fulltext_search_sql(field_name):
raise NotImplementedError
@@ -168,6 +176,19 @@ def get_autoinc_sql(table):
END;\n""" % (tr_name, quote_name(table), sq_name)
return sequence_sql, trigger_sql
+def get_sql_flush(style, tables, sequences):
+ """Return a list of SQL statements required to remove all data from
+ all tables in the database (without actually removing the tables
+ themselves) and put the database in an empty 'initial' state
+ """
+ # Return a list of 'TRUNCATE x;', 'TRUNCATE y;', 'TRUNCATE z;'... style SQL statements
+ # TODO - SQL not actually tested against Oracle yet!
+ # TODO - autoincrement indices reset required? See other get_sql_flush() implementations
+ sql = ['%s %s;' % \
+ (style.SQL_KEYWORD('TRUNCATE'),
+ style.SQL_FIELD(quote_name(table))
+ ) for table in tables]
+
OPERATOR_MAPPING = {
'exact': '= %s',
'iexact': "LIKE %s ESCAPE '\\'",
diff --git a/django/db/backends/postgresql/base.py b/django/db/backends/postgresql/base.py
index e7714a73d9..58b6189545 100644
--- a/django/db/backends/postgresql/base.py
+++ b/django/db/backends/postgresql/base.py
@@ -52,6 +52,8 @@ class UnicodeCursorWrapper(object):
else:
return getattr(self.cursor, attr)
+postgres_version = None
+
class DatabaseWrapper(local):
def __init__(self, **kwargs):
self.connection = None
@@ -60,7 +62,9 @@ class DatabaseWrapper(local):
def cursor(self):
from django.conf import settings
+ set_tz = False
if self.connection is None:
+ set_tz = True
if settings.DATABASE_NAME == '':
from django.core.exceptions import ImproperlyConfigured
raise ImproperlyConfigured, "You need to specify DATABASE_NAME in your Django settings file."
@@ -76,17 +80,23 @@ class DatabaseWrapper(local):
self.connection = Database.connect(conn_string, **self.options)
self.connection.set_isolation_level(1) # make transactions transparent to all cursors
cursor = self.connection.cursor()
- cursor.execute("SET TIME ZONE %s", [settings.TIME_ZONE])
+ if set_tz:
+ cursor.execute("SET TIME ZONE %s", [settings.TIME_ZONE])
cursor = UnicodeCursorWrapper(cursor, settings.DEFAULT_CHARSET)
+ global postgres_version
+ if not postgres_version:
+ cursor.execute("SELECT version()")
+ postgres_version = [int(val) for val in cursor.fetchone()[0].split()[1].split('.')]
if settings.DEBUG:
return util.CursorDebugWrapper(cursor, self)
return cursor
def _commit(self):
- return self.connection.commit()
+ if self.connection is not None:
+ return self.connection.commit()
def _rollback(self):
- if self.connection:
+ if self.connection is not None:
return self.connection.rollback()
def close(self):
@@ -143,6 +153,9 @@ def get_limit_offset_sql(limit, offset=None):
def get_random_function_sql():
return "RANDOM()"
+def get_deferrable_sql():
+ return " DEFERRABLE INITIALLY DEFERRED"
+
def get_fulltext_search_sql(field_name):
raise NotImplementedError
@@ -158,6 +171,61 @@ def get_max_name_length():
def get_autoinc_sql(table):
return None
+def get_sql_flush(style, tables, sequences):
+ """Return a list of SQL statements required to remove all data from
+ all tables in the database (without actually removing the tables
+ themselves) and put the database in an empty 'initial' state
+
+ """
+ if tables:
+ if postgres_version[0] >= 8 and postgres_version[1] >= 1:
+ # Postgres 8.1+ can do 'TRUNCATE x, y, z...;'. In fact, it *has to* in order to be able to
+ # truncate tables referenced by a foreign key in any other table. The result is a
+ # single SQL TRUNCATE statement.
+ sql = ['%s %s;' % \
+ (style.SQL_KEYWORD('TRUNCATE'),
+ style.SQL_FIELD(', '.join([quote_name(table) for table in tables]))
+ )]
+ else:
+ # Older versions of Postgres can't do TRUNCATE in a single call, so they must use
+ # a simple delete.
+ sql = ['%s %s %s;' % \
+ (style.SQL_KEYWORD('DELETE'),
+ style.SQL_KEYWORD('FROM'),
+ style.SQL_FIELD(quote_name(table))
+ ) for table in tables]
+
+ # 'ALTER SEQUENCE sequence_name RESTART WITH 1;'... style SQL statements
+ # to reset sequence indices
+ for sequence_info in sequences:
+ table_name = sequence_info['table']
+ column_name = sequence_info['column']
+ if column_name and len(column_name)>0:
+ # sequence name in this case will be <table>_<column>_seq
+ 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_KEYWORD('RESTART'),
+ style.SQL_KEYWORD('WITH'),
+ style.SQL_FIELD('1')
+ )
+ )
+ else:
+ # sequence name in this case will be <table>_id_seq
+ 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_KEYWORD('RESTART'),
+ style.SQL_KEYWORD('WITH'),
+ style.SQL_FIELD('1')
+ )
+ )
+ return sql
+ else:
+ return []
+
# Register these custom typecasts, because Django expects dates/times to be
# in Python's native (standard-library) datetime/time format, whereas psycopg
# use mx.DateTime by default.
diff --git a/django/db/backends/postgresql_psycopg2/base.py b/django/db/backends/postgresql_psycopg2/base.py
index 1392db7e13..dd586f454e 100644
--- a/django/db/backends/postgresql_psycopg2/base.py
+++ b/django/db/backends/postgresql_psycopg2/base.py
@@ -20,6 +20,8 @@ except ImportError:
# Import copy of _thread_local.py from Python 2.4
from django.utils._threading_local import local
+postgres_version = None
+
class DatabaseWrapper(local):
def __init__(self, **kwargs):
self.connection = None
@@ -28,7 +30,9 @@ class DatabaseWrapper(local):
def cursor(self):
from django.conf import settings
+ set_tz = False
if self.connection is None:
+ set_tz = True
if settings.DATABASE_NAME == '':
from django.core.exceptions import ImproperlyConfigured
raise ImproperlyConfigured, "You need to specify DATABASE_NAME in your Django settings file."
@@ -45,16 +49,22 @@ class DatabaseWrapper(local):
self.connection.set_isolation_level(1) # make transactions transparent to all cursors
cursor = self.connection.cursor()
cursor.tzinfo_factory = None
- cursor.execute("SET TIME ZONE %s", [settings.TIME_ZONE])
+ if set_tz:
+ cursor.execute("SET TIME ZONE %s", [settings.TIME_ZONE])
+ global postgres_version
+ if not postgres_version:
+ cursor.execute("SELECT version()")
+ postgres_version = [int(val) for val in cursor.fetchone()[0].split()[1].split('.')]
if settings.DEBUG:
return util.CursorDebugWrapper(cursor, self)
return cursor
def _commit(self):
- return self.connection.commit()
+ if self.connection is not None:
+ return self.connection.commit()
def _rollback(self):
- if self.connection:
+ if self.connection is not None:
return self.connection.rollback()
def close(self):
@@ -103,6 +113,9 @@ def get_limit_offset_sql(limit, offset=None):
def get_random_function_sql():
return "RANDOM()"
+def get_deferrable_sql():
+ return " DEFERRABLE INITIALLY DEFERRED"
+
def get_fulltext_search_sql(field_name):
raise NotImplementedError
@@ -118,6 +131,58 @@ def get_max_name_length():
def get_autoinc_sql(table):
return None
+def get_sql_flush(style, tables, sequences):
+ """Return a list of SQL statements required to remove all data from
+ all tables in the database (without actually removing the tables
+ themselves) and put the database in an empty 'initial' state
+ """
+ if tables:
+ if postgres_version[0] >= 8 and postgres_version[1] >= 1:
+ # Postgres 8.1+ can do 'TRUNCATE x, y, z...;'. In fact, it *has to* in order to be able to
+ # truncate tables referenced by a foreign key in any other table. The result is a
+ # single SQL TRUNCATE statement
+ sql = ['%s %s;' % \
+ (style.SQL_KEYWORD('TRUNCATE'),
+ style.SQL_FIELD(', '.join([quote_name(table) for table in tables]))
+ )]
+ else:
+ sql = ['%s %s %s;' % \
+ (style.SQL_KEYWORD('DELETE'),
+ style.SQL_KEYWORD('FROM'),
+ style.SQL_FIELD(quote_name(table))
+ ) for table in tables]
+
+ # 'ALTER SEQUENCE sequence_name RESTART WITH 1;'... style SQL statements
+ # to reset sequence indices
+ for sequence in sequences:
+ table_name = sequence['table']
+ column_name = sequence['column']
+ if column_name and len(column_name) > 0:
+ # sequence name in this case will be <table>_<column>_seq
+ 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_KEYWORD('RESTART'),
+ style.SQL_KEYWORD('WITH'),
+ style.SQL_FIELD('1')
+ )
+ )
+ else:
+ # sequence name in this case will be <table>_id_seq
+ 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_KEYWORD('RESTART'),
+ style.SQL_KEYWORD('WITH'),
+ style.SQL_FIELD('1')
+ )
+ )
+ return sql
+ else:
+ return []
+
OPERATOR_MAPPING = {
'exact': '= %s',
'iexact': 'ILIKE %s',
diff --git a/django/db/backends/sqlite3/base.py b/django/db/backends/sqlite3/base.py
index dd08011e2e..f933c6d3cb 100644
--- a/django/db/backends/sqlite3/base.py
+++ b/django/db/backends/sqlite3/base.py
@@ -67,10 +67,11 @@ class DatabaseWrapper(local):
return cursor
def _commit(self):
- self.connection.commit()
+ if self.connection is not None:
+ self.connection.commit()
def _rollback(self):
- if self.connection:
+ if self.connection is not None:
self.connection.rollback()
def close(self):
@@ -146,6 +147,9 @@ def get_limit_offset_sql(limit, offset=None):
def get_random_function_sql():
return "RANDOM()"
+def get_deferrable_sql():
+ return ""
+
def get_fulltext_search_sql(field_name):
raise NotImplementedError
@@ -161,6 +165,24 @@ def get_max_name_length():
def get_autoinc_sql(table):
return None
+def get_sql_flush(style, tables, sequences):
+ """Return a list of SQL statements required to remove all data from
+ all tables in the database (without actually removing the tables
+ themselves) and put the database in an empty 'initial' state
+
+ """
+ # NB: The generated SQL below is specific to SQLite
+ # Note: The DELETE FROM... SQL generated below works for SQLite databases
+ # because constraints don't exist
+ sql = ['%s %s %s;' % \
+ (style.SQL_KEYWORD('DELETE'),
+ style.SQL_KEYWORD('FROM'),
+ style.SQL_FIELD(quote_name(table))
+ ) for table in tables]
+ # Note: No requirement for reset of auto-incremented indices (cf. other
+ # get_sql_flush() implementations). Just return SQL at this point
+ return sql
+
def _sqlite_date_trunc(lookup_type, dt):
try:
dt = util.typecast_timestamp(dt)
diff --git a/django/db/models/__init__.py b/django/db/models/__init__.py
index 0308dd047a..13832f95a3 100644
--- a/django/db/models/__init__.py
+++ b/django/db/models/__init__.py
@@ -50,4 +50,9 @@ class LazyDate(object):
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 1224e3f697..ed7f484626 100644
--- a/django/db/models/base.py
+++ b/django/db/models/base.py
@@ -13,6 +13,7 @@ from django.dispatch import dispatcher
from django.utils.datastructures import SortedDict
from django.utils.functional import curry
from django.conf import settings
+from itertools import izip
import types
import sys
import os
@@ -21,8 +22,8 @@ class ModelBase(type):
"Metaclass for all models"
def __new__(cls, name, bases, attrs):
# If this isn't a subclass of Model, don't do anything special.
- if not bases or bases == (object,):
- return type.__new__(cls, name, bases, attrs)
+ if name == 'Model' or not filter(lambda b: issubclass(b, Model), bases):
+ return super(ModelBase, cls).__new__(cls, name, bases, attrs)
# Create the class.
new_class = type.__new__(cls, name, bases, {'__module__': attrs.pop('__module__')})
@@ -90,41 +91,74 @@ class Model(object):
def __init__(self, *args, **kwargs):
dispatcher.send(signal=signals.pre_init, sender=self.__class__, args=args, kwargs=kwargs)
- for f in self._meta.fields:
- if isinstance(f.rel, ManyToOneRel):
- try:
- # Assume object instance was passed in.
- rel_obj = kwargs.pop(f.name)
- except KeyError:
+
+ # There is a rather weird disparity here; if kwargs, it's set, then args
+ # overrides it. It should be one or the other; don't duplicate the work
+ # The reason for the kwargs check is that standard iterator passes in by
+ # args, and nstantiation for iteration is 33% faster.
+ args_len = len(args)
+ if args_len > len(self._meta.fields):
+ # Daft, but matches old exception sans the err msg.
+ raise IndexError("Number of args exceeds number of fields")
+
+ fields_iter = iter(self._meta.fields)
+ if not kwargs:
+ # The ordering of the izip calls matter - izip throws StopIteration
+ # when an iter throws it. So if the first iter throws it, the second
+ # is *not* consumed. We rely on this, so don't change the order
+ # without changing the logic.
+ for val, field in izip(args, fields_iter):
+ setattr(self, field.attname, val)
+ else:
+ # Slower, kwargs-ready version.
+ for val, field in izip(args, fields_iter):
+ setattr(self, field.attname, val)
+ kwargs.pop(field.name, None)
+ # Maintain compatibility with existing calls.
+ if isinstance(field.rel, ManyToOneRel):
+ kwargs.pop(field.attname, None)
+
+ # Now we're left with the unprocessed fields that *must* come from
+ # keywords, or default.
+
+ for field in fields_iter:
+ if kwargs:
+ if isinstance(field.rel, ManyToOneRel):
try:
- # Object instance wasn't passed in -- must be an ID.
- val = kwargs.pop(f.attname)
+ # Assume object instance was passed in.
+ rel_obj = kwargs.pop(field.name)
except KeyError:
- val = f.get_default()
- else:
- # Object instance was passed in.
- # Special case: You can pass in "None" for related objects if it's allowed.
- if rel_obj is None and f.null:
- val = None
- else:
try:
- val = getattr(rel_obj, f.rel.get_related_field().attname)
- except AttributeError:
- raise TypeError, "Invalid value: %r should be a %s instance, not a %s" % (f.name, f.rel.to, type(rel_obj))
- setattr(self, f.attname, val)
+ # Object instance wasn't passed in -- must be an ID.
+ val = kwargs.pop(field.attname)
+ except KeyError:
+ val = field.get_default()
+ else:
+ # Object instance was passed in. Special case: You can
+ # pass in "None" for related objects if it's allowed.
+ if rel_obj is None and field.null:
+ val = None
+ else:
+ try:
+ val = getattr(rel_obj, field.rel.get_related_field().attname)
+ except AttributeError:
+ raise TypeError("Invalid value: %r should be a %s instance, not a %s" %
+ (field.name, field.rel.to, type(rel_obj)))
+ else:
+ val = kwargs.pop(field.attname, field.get_default())
else:
- val = kwargs.pop(f.attname, f.get_default())
- setattr(self, f.attname, val)
- for prop in kwargs.keys():
- try:
- if isinstance(getattr(self.__class__, prop), property):
- setattr(self, prop, kwargs.pop(prop))
- except AttributeError:
- pass
+ val = field.get_default()
+ setattr(self, field.attname, val)
+
if kwargs:
- raise TypeError, "'%s' is an invalid keyword argument for this function" % kwargs.keys()[0]
- for i, arg in enumerate(args):
- setattr(self, self._meta.fields[i].attname, arg)
+ for prop in kwargs.keys():
+ try:
+ if isinstance(getattr(self.__class__, prop), property):
+ setattr(self, prop, kwargs.pop(prop))
+ except AttributeError:
+ pass
+ if kwargs:
+ raise TypeError, "'%s' is an invalid keyword argument for this function" % kwargs.keys()[0]
dispatcher.send(signal=signals.post_init, sender=self.__class__, instance=self)
def add_to_class(cls, name, value):
@@ -322,7 +356,7 @@ class Model(object):
def _get_FIELD_size(self, field):
return os.path.getsize(self._get_FIELD_filename(field))
- def _save_FIELD_file(self, field, filename, raw_contents):
+ def _save_FIELD_file(self, field, filename, raw_contents, save=True):
directory = field.get_directory_name()
try: # Create the date-based directory if it doesn't exist.
os.makedirs(os.path.join(settings.MEDIA_ROOT, directory))
@@ -357,8 +391,9 @@ class Model(object):
if field.height_field:
setattr(self, field.height_field, height)
- # Save the object, because it has changed.
- self.save()
+ # Save the object because it has changed unless save is False
+ if save:
+ self.save()
_save_FIELD_file.alters_data = True
diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py
index e5c9ff2fe2..d0d6078da9 100644
--- a/django/db/models/fields/__init__.py
+++ b/django/db/models/fields/__init__.py
@@ -167,7 +167,7 @@ class Field(object):
def get_db_prep_lookup(self, lookup_type, value):
"Returns field's value prepared for database lookup."
- if lookup_type in ('exact', 'gt', 'gte', 'lt', 'lte', 'year', 'month', 'day', 'search'):
+ if lookup_type in ('exact', 'gt', 'gte', 'lt', 'lte', 'month', 'day', 'search'):
return [value]
elif lookup_type in ('range', 'in'):
return value
@@ -181,7 +181,13 @@ class Field(object):
return ["%%%s" % prep_for_like_query(value)]
elif lookup_type == 'isnull':
return []
- raise TypeError, "Field has invalid lookup: %s" % lookup_type
+ elif lookup_type == 'year':
+ try:
+ value = int(value)
+ except ValueError:
+ raise ValueError("The __year lookup type requires an integer argument")
+ return ['%s-01-01 00:00:00' % value, '%s-12-31 23:59:59.999999' % value]
+ raise TypeError("Field has invalid lookup: %s" % lookup_type)
def has_default(self):
"Returns a boolean of whether this field has a default value."
@@ -440,6 +446,8 @@ class DateField(Field):
Field.__init__(self, verbose_name, name, **kwargs)
def to_python(self, value):
+ if value is None:
+ return value
if isinstance(value, datetime.datetime):
return value.date()
if isinstance(value, datetime.date):
@@ -508,6 +516,8 @@ class DateField(Field):
class DateTimeField(DateField):
def to_python(self, value):
+ if value is None:
+ return value
if isinstance(value, datetime.datetime):
return value
if isinstance(value, datetime.date):
@@ -645,7 +655,7 @@ class FileField(Field):
setattr(cls, 'get_%s_filename' % self.name, curry(cls._get_FIELD_filename, field=self))
setattr(cls, 'get_%s_url' % self.name, curry(cls._get_FIELD_url, field=self))
setattr(cls, 'get_%s_size' % self.name, curry(cls._get_FIELD_size, field=self))
- setattr(cls, 'save_%s_file' % self.name, lambda instance, filename, raw_contents: instance._save_FIELD_file(self, filename, raw_contents))
+ setattr(cls, 'save_%s_file' % self.name, lambda instance, filename, raw_contents, save=True: instance._save_FIELD_file(self, filename, raw_contents, save))
dispatcher.connect(self.delete_file, signal=signals.post_delete, sender=cls)
def delete_file(self, instance):
@@ -663,14 +673,14 @@ class FileField(Field):
def get_manipulator_field_names(self, name_prefix):
return [name_prefix + self.name + '_file', name_prefix + self.name]
- def save_file(self, new_data, new_object, original_object, change, rel):
+ def save_file(self, new_data, new_object, original_object, change, rel, save=True):
upload_field_name = self.get_manipulator_field_names('')[0]
if new_data.get(upload_field_name, False):
func = getattr(new_object, 'save_%s_file' % self.name)
if rel:
- func(new_data[upload_field_name][0]["filename"], new_data[upload_field_name][0]["content"])
+ func(new_data[upload_field_name][0]["filename"], new_data[upload_field_name][0]["content"], save)
else:
- func(new_data[upload_field_name]["filename"], new_data[upload_field_name]["content"])
+ func(new_data[upload_field_name]["filename"], new_data[upload_field_name]["content"], save)
def get_directory_name(self):
return os.path.normpath(datetime.datetime.now().strftime(self.upload_to))
@@ -714,12 +724,12 @@ class ImageField(FileField):
if not self.height_field:
setattr(cls, 'get_%s_height' % self.name, curry(cls._get_FIELD_height, field=self))
- def save_file(self, new_data, new_object, original_object, change, rel):
- FileField.save_file(self, new_data, new_object, original_object, change, rel)
+ def save_file(self, new_data, new_object, original_object, change, rel, save=True):
+ FileField.save_file(self, new_data, new_object, original_object, change, rel, save)
# If the image has height and/or width field(s) and they haven't
# changed, set the width and/or height field(s) back to their original
# values.
- if change and (self.width_field or self.height_field):
+ if change and (self.width_field or self.height_field) and save:
if self.width_field:
setattr(new_object, self.width_field, getattr(original_object, self.width_field))
if self.height_field:
@@ -762,6 +772,12 @@ class PhoneNumberField(IntegerField):
def validate(self, field_data, all_data):
validators.isValidPhone(field_data, all_data)
+ def formfield(self, **kwargs):
+ from django.contrib.localflavor.usa.forms import USPhoneNumberField
+ defaults = {'required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text}
+ defaults.update(kwargs)
+ return USPhoneNumberField(**defaults)
+
class PositiveIntegerField(IntegerField):
def get_manipulator_field_objs(self):
return [oldforms.PositiveIntegerField]
diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py
index b517747735..fad9c164c1 100644
--- a/django/db/models/fields/related.py
+++ b/django/db/models/fields/related.py
@@ -553,9 +553,9 @@ class ForeignKey(RelatedField, Field):
setattr(cls, related.get_accessor_name(), ForeignRelatedObjectsDescriptor(related))
def formfield(self, **kwargs):
- defaults = {'choices': self.get_choices_default(), 'required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text}
+ 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.ChoiceField(**defaults)
+ return forms.ModelChoiceField(**defaults)
class OneToOneField(RelatedField, IntegerField):
def __init__(self, to, to_field=None, **kwargs):
@@ -619,9 +619,9 @@ class OneToOneField(RelatedField, IntegerField):
cls._meta.one_to_one_field = self
def formfield(self, **kwargs):
- defaults = {'choices': self.get_choices_default(), 'required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text}
+ 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.ChoiceField(**kwargs)
+ return forms.ModelChoiceField(**defaults)
class ManyToManyField(RelatedField, Field):
def __init__(self, to, **kwargs):
@@ -742,9 +742,9 @@ class ManyToManyField(RelatedField, Field):
# 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 = {'choices': self.get_choices_default(), 'required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text}
+ 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.MultipleChoiceField(**defaults)
+ return forms.ModelMultipleChoiceField(**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/manipulators.py b/django/db/models/manipulators.py
index aea3aa70a7..c624cb698b 100644
--- a/django/db/models/manipulators.py
+++ b/django/db/models/manipulators.py
@@ -96,14 +96,16 @@ class AutomaticManipulator(oldforms.Manipulator):
if self.change:
params[self.opts.pk.attname] = self.obj_key
- # First, save the basic object itself.
+ # First, create the basic object itself.
new_object = self.model(**params)
- new_object.save()
- # Now that the object's been saved, save any uploaded files.
+ # Now that the object's been created, save any uploaded files.
for f in self.opts.fields:
if isinstance(f, FileField):
- f.save_file(new_data, new_object, self.change and self.original_object or None, self.change, rel=False)
+ f.save_file(new_data, new_object, self.change and self.original_object or None, self.change, rel=False, save=False)
+
+ # Now save the object
+ new_object.save()
# Calculate which primary fields have changed.
if self.change:
diff --git a/django/db/models/query.py b/django/db/models/query.py
index a124da640b..a707bc3996 100644
--- a/django/db/models/query.py
+++ b/django/db/models/query.py
@@ -84,6 +84,7 @@ class _QuerySet(object):
self._filters = Q()
self._order_by = None # Ordering, e.g. ('date', '-name'). If None, use model's ordering.
self._select_related = False # Whether to fill cache for related objects.
+ self._max_related_depth = 0 # Maximum "depth" for select_related
self._distinct = False # Whether the query should use SELECT DISTINCT.
self._select = {} # Dictionary of attname -> SQL.
self._where = [] # List of extra WHERE clauses to use.
@@ -167,17 +168,16 @@ class _QuerySet(object):
def iterator(self):
"Performs the SELECT database lookup of this QuerySet."
- # self._select is a dictionary, and dictionaries' key order is
- # undefined, so we convert it to a list of tuples.
- extra_select = self._select.items()
-
- cursor = connection.cursor()
-
try:
select, sql, params, full_query = self._get_sql_clause()
except EmptyResultSet:
raise StopIteration
+ # self._select is a dictionary, and dictionaries' key order is
+ # undefined, so we convert it to a list of tuples.
+ extra_select = self._select.items()
+
+ cursor = connection.cursor()
cursor.execute("SELECT " + (self._distinct and "DISTINCT " or "") + ",".join(select) + sql, params)
fill_cache = self._select_related
@@ -188,7 +188,8 @@ class _QuerySet(object):
raise StopIteration
for row in rows:
if fill_cache:
- obj, index_end = get_cached_row(self.model, row, 0)
+ 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])
for i, k in enumerate(extra_select):
@@ -196,12 +197,25 @@ class _QuerySet(object):
yield obj
def count(self):
- "Performs a SELECT COUNT() and returns the number of records as an integer."
+ """
+ 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
+
+ offset = counter._offset
+ limit = counter._limit
counter._offset = None
counter._limit = None
- counter._select_related = False
try:
select, sql, params, full_query = counter._get_sql_clause()
@@ -215,7 +229,16 @@ class _QuerySet(object):
cursor.execute("SELECT COUNT(DISTINCT(%s))" % id_col + sql, params)
else:
cursor.execute("SELECT COUNT(*)" + sql, params)
- return cursor.fetchone()[0]
+ count = cursor.fetchone()[0]
+
+ # Apply any offset and limit constraints manually, since using LIMIT or
+ # OFFSET in SQL doesn't change the output of COUNT.
+ if offset:
+ count = max(0, count - offset)
+ if limit:
+ count = min(limit, count)
+
+ return count
def get(self, *args, **kwargs):
"Performs the SELECT and returns a single object matching the given keyword arguments."
@@ -374,9 +397,9 @@ class _QuerySet(object):
else:
return self._filter_or_exclude(None, **filter_obj)
- def select_related(self, true_or_false=True):
+ def select_related(self, true_or_false=True, depth=0):
"Returns a new QuerySet instance with '_select_related' modified."
- return self._clone(_select_related=true_or_false)
+ return self._clone(_select_related=true_or_false, _max_related_depth=depth)
def order_by(self, *field_names):
"Returns a new QuerySet instance with the ordering changed."
@@ -410,6 +433,7 @@ class _QuerySet(object):
c._filters = self._filters
c._order_by = self._order_by
c._select_related = self._select_related
+ c._max_related_depth = self._max_related_depth
c._distinct = self._distinct
c._select = self._select.copy()
c._where = self._where[:]
@@ -463,7 +487,10 @@ class _QuerySet(object):
# Add additional tables and WHERE clauses based on select_related.
if self._select_related:
- fill_table_cache(opts, select, tables, where, opts.db_table, [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.
if self._select:
@@ -531,11 +558,18 @@ else:
QuerySet = _QuerySet
class ValuesQuerySet(QuerySet):
- def iterator(self):
+ def __init__(self, *args, **kwargs):
+ super(ValuesQuerySet, self).__init__(*args, **kwargs)
# select_related and select aren't supported in values().
self._select_related = False
self._select = {}
+ def iterator(self):
+ try:
+ select, sql, params, full_query = self._get_sql_clause()
+ except EmptyResultSet:
+ raise StopIteration
+
# self._fields is a list of field names to fetch.
if self._fields:
columns = [self.model._meta.get_field(f, many_to_many=False).column for f in self._fields]
@@ -544,14 +578,8 @@ class ValuesQuerySet(QuerySet):
columns = [f.column for f in self.model._meta.fields]
field_names = [f.attname for f in self.model._meta.fields]
- cursor = connection.cursor()
-
- try:
- select, sql, params, full_query = self._get_sql_clause()
- except EmptyResultSet:
- raise StopIteration
-
select = ['%s.%s' % (backend.quote_name(self.model._meta.db_table), backend.quote_name(c)) for c in columns]
+ cursor = connection.cursor()
cursor.execute("SELECT " + (self._distinct and "DISTINCT " or "") + ",".join(select) + sql, params)
while 1:
rows = cursor.fetchmany(GET_ITERATOR_CHUNK_SIZE)
@@ -608,9 +636,6 @@ class EmptyQuerySet(QuerySet):
super(EmptyQuerySet, self).__init__(model)
self._result_cache = []
- def iterator(self):
- raise StopIteration
-
def count(self):
return 0
@@ -622,6 +647,9 @@ class EmptyQuerySet(QuerySet):
c._result_cache = []
return c
+ def _get_sql_clause(self):
+ raise EmptyResultSet
+
class QOperator(object):
"Base class for QAnd and QOr"
def __init__(self, *args):
@@ -717,9 +745,9 @@ def get_where_clause(lookup_type, table_prefix, field_name, value):
return '%s%s IN (%s)' % (table_prefix, field_name, in_string)
else:
raise EmptyResultSet
- elif lookup_type == 'range':
+ elif lookup_type in ('range', 'year'):
return '%s%s BETWEEN %%s AND %%s' % (table_prefix, field_name)
- elif lookup_type in ('year', 'month', 'day'):
+ elif lookup_type in ('month', 'day'):
return "%s = %%s" % backend.get_date_extract_sql(lookup_type, table_prefix + field_name)
elif lookup_type == 'isnull':
return "%s%s IS %sNULL" % (table_prefix, field_name, (not value and 'NOT ' or ''))
@@ -727,22 +755,33 @@ def get_where_clause(lookup_type, table_prefix, field_name, value):
return backend.get_fulltext_search_sql(table_prefix + field_name)
raise TypeError, "Got invalid lookup_type: %s" % repr(lookup_type)
-def get_cached_row(klass, row, index_start):
- "Helper function that recursively returns an object with cache filled"
+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:
if f.rel and not f.null:
- rel_obj, index_end = get_cached_row(f.rel.to, row, index_end)
- setattr(obj, f.get_cache_name(), rel_obj)
+ cached_row = get_cached_row(f.rel.to, row, index_end, max_depth, cur_depth+1)
+ if cached_row:
+ rel_obj, index_end = cached_row
+ setattr(obj, f.get_cache_name(), rel_obj)
return obj, index_end
-def fill_table_cache(opts, select, tables, where, old_prefix, cache_tables_seen):
+def fill_table_cache(opts, select, tables, where, old_prefix, cache_tables_seen, max_depth=0, cur_depth=0):
"""
Helper function that recursively populates the select, tables and where (in
place) for select_related queries.
"""
- from django.db.models.fields import AutoField
+
+ # 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:
@@ -757,7 +796,7 @@ def fill_table_cache(opts, select, tables, where, old_prefix, cache_tables_seen)
where.append('%s.%s = %s.%s' % \
(qn(old_prefix), qn(f.column), qn(db_table), qn(f.rel.get_related_field().column)))
select.extend(['%s.%s' % (backend.quote_name(db_table), backend.quote_name(f2.column)) for f2 in f.rel.to._meta.fields])
- fill_table_cache(f.rel.to._meta, select, tables, where, db_table, cache_tables_seen)
+ fill_table_cache(f.rel.to._meta, select, tables, where, db_table, cache_tables_seen, max_depth, cur_depth+1)
def parse_lookup(kwarg_items, opts):
# Helper function that handles converting API kwargs
@@ -903,8 +942,14 @@ def lookup_inner(path, lookup_type, value, opts, table, column):
new_opts = field.rel.to._meta
new_column = new_opts.pk.column
join_column = field.column
-
- raise FieldFound
+ raise FieldFound
+ elif path:
+ # For regular fields, if there are still items on the path,
+ # an error has been made. We munge "name" so that the error
+ # properly identifies the cause of the problem.
+ name += LOOKUP_SEPARATOR + path[0]
+ else:
+ raise FieldFound
except FieldFound: # Match found, loop has been shortcut.
pass
diff --git a/django/db/models/related.py b/django/db/models/related.py
index ac1ec50ca2..8c64b464ec 100644
--- a/django/db/models/related.py
+++ b/django/db/models/related.py
@@ -1,7 +1,7 @@
class BoundRelatedObject(object):
def __init__(self, related_object, field_mapping, original):
self.relation = related_object
- self.field_mappings = field_mapping[related_object.opts.module_name]
+ self.field_mappings = field_mapping[related_object.name]
def template_name(self):
raise NotImplementedError
@@ -16,7 +16,7 @@ class RelatedObject(object):
self.opts = model._meta
self.field = field
self.edit_inline = field.rel.edit_inline
- self.name = self.opts.module_name
+ self.name = '%s_%s' % (self.opts.app_label, self.opts.module_name)
self.var_name = self.opts.object_name.lower()
def flatten_data(self, follow, obj=None):
@@ -68,7 +68,10 @@ class RelatedObject(object):
# object
return [attr]
else:
- return [None] * self.field.rel.num_in_admin
+ if self.field.rel.min_num_in_admin:
+ return [None] * max(self.field.rel.num_in_admin, self.field.rel.min_num_in_admin)
+ else:
+ return [None] * self.field.rel.num_in_admin
def get_db_prep_lookup(self, lookup_type, value):
# Defer to the actual field definition for db prep
@@ -101,12 +104,12 @@ class RelatedObject(object):
attr = getattr(manipulator.original_object, self.get_accessor_name())
count = attr.count()
count += self.field.rel.num_extra_on_change
- if self.field.rel.min_num_in_admin:
- count = max(count, self.field.rel.min_num_in_admin)
- if self.field.rel.max_num_in_admin:
- count = min(count, self.field.rel.max_num_in_admin)
else:
count = self.field.rel.num_in_admin
+ if self.field.rel.min_num_in_admin:
+ count = max(count, self.field.rel.min_num_in_admin)
+ if self.field.rel.max_num_in_admin:
+ count = min(count, self.field.rel.max_num_in_admin)
else:
count = 1
diff --git a/django/dispatch/dispatcher.py b/django/dispatch/dispatcher.py
index 1a617b5946..029c59fd3f 100644
--- a/django/dispatch/dispatcher.py
+++ b/django/dispatch/dispatcher.py
@@ -25,7 +25,6 @@ Internal attributes:
deletion, (considerably speeds up the cleanup process
vs. the original code.)
"""
-from __future__ import generators
import types, weakref
from django.dispatch import saferef, robustapply, errors
@@ -33,11 +32,6 @@ __author__ = "Patrick K. O'Brien <pobrien@orbtech.com>"
__cvsid__ = "$Id: dispatcher.py,v 1.9 2005/09/17 04:55:57 mcfletch Exp $"
__version__ = "$Revision: 1.9 $"[11:-2]
-try:
- True
-except NameError:
- True = 1==1
- False = 1==0
class _Parameter:
"""Used to represent default parameter values."""
@@ -140,10 +134,9 @@ def connect(receiver, signal=Any, sender=Any, weak=True):
if weak:
receiver = saferef.safeRef(receiver, onDelete=_removeReceiver)
senderkey = id(sender)
- if connections.has_key(senderkey):
- signals = connections[senderkey]
- else:
- connections[senderkey] = signals = {}
+
+ signals = connections.setdefault(senderkey, {})
+
# Keep track of senders for cleanup.
# Is Anonymous something we want to clean up?
if sender not in (None, Anonymous, Any):
@@ -251,10 +244,10 @@ def getReceivers( sender = Any, signal = Any ):
to retrieve the actual receiver objects as an iterable
object.
"""
- try:
- return connections[id(sender)][signal]
- except KeyError:
- return []
+ existing = connections.get(id(sender))
+ if existing is not None:
+ return existing.get(signal, [])
+ return []
def liveReceivers(receivers):
"""Filter sequence of receivers to get resolved, live receivers
@@ -278,30 +271,48 @@ def liveReceivers(receivers):
def getAllReceivers( sender = Any, signal = Any ):
"""Get list of all receivers from global tables
- This gets all receivers which should receive
+ This gets all dereferenced receivers which should receive
the given signal from sender, each receiver should
be produced only once by the resulting generator
"""
receivers = {}
- for set in (
- # Get receivers that receive *this* signal from *this* sender.
- getReceivers( sender, signal ),
- # Add receivers that receive *any* signal from *this* sender.
- getReceivers( sender, Any ),
- # Add receivers that receive *this* signal from *any* sender.
- getReceivers( Any, signal ),
- # Add receivers that receive *any* signal from *any* sender.
- getReceivers( Any, Any ),
- ):
- for receiver in set:
- if receiver: # filter out dead instance-method weakrefs
- try:
- if not receivers.has_key( receiver ):
- receivers[receiver] = 1
- yield receiver
- except TypeError:
- # dead weakrefs raise TypeError on hash...
- pass
+ # Get receivers that receive *this* signal from *this* sender.
+ # Add receivers that receive *any* signal from *this* sender.
+ # Add receivers that receive *this* signal from *any* sender.
+ # Add receivers that receive *any* signal from *any* sender.
+ l = []
+ i = id(sender)
+ if i in connections:
+ sender_receivers = connections[i]
+ if signal in sender_receivers:
+ l.extend(sender_receivers[signal])
+ if signal is not Any and Any in sender_receivers:
+ l.extend(sender_receivers[Any])
+
+ if sender is not Any:
+ i = id(Any)
+ if i in connections:
+ sender_receivers = connections[i]
+ if sender_receivers is not None:
+ if signal in sender_receivers:
+ l.extend(sender_receivers[signal])
+ if signal is not Any and Any in sender_receivers:
+ l.extend(sender_receivers[Any])
+
+ for receiver in l:
+ try:
+ if not receiver in receivers:
+ if isinstance(receiver, WEAKREF_TYPES):
+ receiver = receiver()
+ # this should only (rough guess) be possible if somehow, deref'ing
+ # triggered a wipe.
+ if receiver is None:
+ continue
+ receivers[receiver] = 1
+ yield receiver
+ except TypeError:
+ # dead weakrefs raise TypeError on hash...
+ pass
def send(signal=Any, sender=Anonymous, *arguments, **named):
"""Send signal from sender to all connected receivers.
@@ -340,7 +351,7 @@ def send(signal=Any, sender=Anonymous, *arguments, **named):
# Call each receiver with whatever arguments it can accept.
# Return a list of tuple pairs [(receiver, response), ... ].
responses = []
- for receiver in liveReceivers(getAllReceivers(sender, signal)):
+ for receiver in getAllReceivers(sender, signal):
response = robustapply.robustApply(
receiver,
signal=signal,
@@ -350,6 +361,8 @@ def send(signal=Any, sender=Anonymous, *arguments, **named):
)
responses.append((receiver, response))
return responses
+
+
def sendExact( signal=Any, sender=Anonymous, *arguments, **named ):
"""Send signal only to those receivers registered for exact message
@@ -421,33 +434,18 @@ def _cleanupConnections(senderkey, signal):
def _removeSender(senderkey):
"""Remove senderkey from connections."""
_removeBackrefs(senderkey)
- try:
- del connections[senderkey]
- except KeyError:
- pass
- # Senderkey will only be in senders dictionary if sender
- # could be weakly referenced.
- try:
- del senders[senderkey]
- except:
- pass
+
+ connections.pop(senderkey, None)
+ senders.pop(senderkey, None)
def _removeBackrefs( senderkey):
"""Remove all back-references to this senderkey"""
- try:
- signals = connections[senderkey]
- except KeyError:
- signals = None
- else:
- items = signals.items()
- def allReceivers( ):
- for signal,set in items:
- for item in set:
- yield item
- for receiver in allReceivers():
+ for receiver_list in connections.pop(senderkey, {}).values():
+ for receiver in receiver_list:
_killBackref( receiver, senderkey )
+
def _removeOldBackRefs(senderkey, signal, receiver, receivers):
"""Kill old sendersBack references from receiver
@@ -483,13 +481,13 @@ def _removeOldBackRefs(senderkey, signal, receiver, receivers):
def _killBackref( receiver, senderkey ):
"""Do the actual removal of back reference from receiver to senderkey"""
receiverkey = id(receiver)
- set = sendersBack.get( receiverkey, () )
- while senderkey in set:
+ receivers_list = sendersBack.get( receiverkey, () )
+ while senderkey in receivers_list:
try:
- set.remove( senderkey )
+ receivers_list.remove( senderkey )
except:
break
- if not set:
+ if not receivers_list:
try:
del sendersBack[ receiverkey ]
except KeyError:
diff --git a/django/http/__init__.py b/django/http/__init__.py
index 48f10329fd..0ae90c4921 100644
--- a/django/http/__init__.py
+++ b/django/http/__init__.py
@@ -52,7 +52,7 @@ def parse_file_upload(header_dict, post_data):
POST = MultiValueDict()
FILES = MultiValueDict()
for submessage in msg.get_payload():
- if isinstance(submessage, email.Message.Message):
+ if submessage and isinstance(submessage, email.Message.Message):
name_dict = parse_header(submessage['Content-Disposition'])[1]
# name_dict is something like {'name': 'file', 'filename': 'test.txt'} for file uploads
# or {'name': 'blah'} for POST fields
@@ -160,7 +160,7 @@ class HttpResponse(object):
self._charset = settings.DEFAULT_CHARSET
if not mimetype:
mimetype = "%s; charset=%s" % (settings.DEFAULT_CONTENT_TYPE, settings.DEFAULT_CHARSET)
- if hasattr(content, '__iter__'):
+ if not isinstance(content, basestring) and hasattr(content, '__iter__'):
self._container = content
self._is_string = False
else:
diff --git a/django/newforms/fields.py b/django/newforms/fields.py
index e9e1fb7746..8e3da03470 100644
--- a/django/newforms/fields.py
+++ b/django/newforms/fields.py
@@ -51,7 +51,7 @@ class Field(object):
if label is not None:
label = smart_unicode(label)
self.required, self.label, self.initial = required, label, initial
- self.help_text = help_text
+ self.help_text = smart_unicode(help_text or '')
widget = widget or self.widget
if isinstance(widget, type):
widget = widget()
@@ -339,8 +339,9 @@ class ChoiceField(Field):
def _set_choices(self, value):
# Setting choices also sets the choices on the widget.
- self._choices = value
- self.widget.choices = value
+ # choices can be any iterable, but we call list() on it because
+ # it will be consumed more than once.
+ self._choices = self.widget.choices = list(value)
choices = property(_get_choices, _set_choices)
@@ -356,7 +357,7 @@ class ChoiceField(Field):
return value
valid_values = set([str(k) for k, v in self.choices])
if value not in valid_values:
- raise ValidationError(gettext(u'Select a valid choice. %s is not one of the available choices.') % value)
+ raise ValidationError(gettext(u'Select a valid choice. That choice is not one of the available choices.'))
return value
class MultipleChoiceField(ChoiceField):
diff --git a/django/newforms/forms.py b/django/newforms/forms.py
index 7e29941bef..2b3aa97428 100644
--- a/django/newforms/forms.py
+++ b/django/newforms/forms.py
@@ -7,6 +7,7 @@ from django.utils.html import escape
from fields import Field
from widgets import TextInput, Textarea, HiddenInput, MultipleHiddenInput
from util import flatatt, StrAndUnicode, ErrorDict, ErrorList, ValidationError
+import copy
__all__ = ('BaseForm', 'Form')
@@ -27,13 +28,24 @@ class SortedDictFromList(SortedDict):
dict.__init__(self, dict(data))
def copy(self):
- return SortedDictFromList(self.items())
+ return SortedDictFromList([(k, copy.copy(v)) for k, v in self.items()])
class DeclarativeFieldsMetaclass(type):
- "Metaclass that converts Field attributes to a dictionary called 'base_fields'."
+ """
+ Metaclass that converts Field attributes to a dictionary called
+ 'base_fields', taking into account parent class 'base_fields' as well.
+ """
def __new__(cls, name, bases, attrs):
fields = [(field_name, attrs.pop(field_name)) for field_name, obj in attrs.items() if isinstance(obj, Field)]
fields.sort(lambda x, y: cmp(x[1].creation_counter, y[1].creation_counter))
+
+ # If this class is subclassing another Form, add that Form's fields.
+ # Note that we loop over the bases in *reverse*. This is necessary in
+ # order to preserve the correct order of fields.
+ for base in bases[::-1]:
+ if hasattr(base, 'base_fields'):
+ fields = base.base_fields.items() + fields
+
attrs['base_fields'] = SortedDictFromList(fields)
return type.__new__(cls, name, bases, attrs)
@@ -49,6 +61,7 @@ class BaseForm(StrAndUnicode):
self.prefix = prefix
self.initial = initial or {}
self.__errors = None # Stores the errors after clean() has been called.
+
# The base_fields class attribute is the *class-wide* definition of
# fields. Because a particular *instance* of the class might want to
# alter self.fields, we create self.fields here by copying base_fields.
@@ -100,7 +113,7 @@ class BaseForm(StrAndUnicode):
output, hidden_fields = [], []
for name, field in self.fields.items():
bf = BoundField(self, field, name)
- bf_errors = bf.errors # Cache in local variable.
+ bf_errors = ErrorList([escape(error) for error in bf.errors]) # Escape and cache in local variable.
if bf.is_hidden:
if bf_errors:
top_errors.extend(['(Hidden field %s) %s' % (name, e) for e in bf_errors])
@@ -205,6 +218,7 @@ class BoundField(StrAndUnicode):
self.label = pretty_name(name)
else:
self.label = self.field.label
+ self.help_text = field.help_text or ''
def __unicode__(self):
"Renders this field as an HTML widget."
diff --git a/django/newforms/models.py b/django/newforms/models.py
index a938b6350e..616c7141e7 100644
--- a/django/newforms/models.py
+++ b/django/newforms/models.py
@@ -3,9 +3,14 @@ Helper functions for creating Form classes from Django models
and database field objects.
"""
+from django.utils.translation import gettext
+from util import ValidationError
from forms import BaseForm, DeclarativeFieldsMetaclass, SortedDictFromList
+from fields import Field, ChoiceField
+from widgets import Select, SelectMultiple, MultipleHiddenInput
-__all__ = ('save_instance', 'form_for_model', 'form_for_instance', 'form_for_fields')
+__all__ = ('save_instance', 'form_for_model', 'form_for_instance', 'form_for_fields',
+ 'ModelChoiceField', 'ModelMultipleChoiceField')
def model_save(self, commit=True):
"""
@@ -31,9 +36,9 @@ def save_instance(form, instance, commit=True):
raise ValueError("The %s could not be changed because the data didn't validate." % opts.object_name)
clean_data = form.clean_data
for f in opts.fields:
- if isinstance(f, models.AutoField):
+ if not f.editable or isinstance(f, models.AutoField):
continue
- setattr(instance, f.attname, clean_data[f.name])
+ setattr(instance, f.name, clean_data[f.name])
if commit:
instance.save()
for f in opts.many_to_many:
@@ -63,6 +68,8 @@ def form_for_model(model, form=BaseForm, formfield_callback=lambda f: f.formfiel
opts = model._meta
field_list = []
for f in opts.fields + opts.many_to_many:
+ if not f.editable:
+ continue
formfield = formfield_callback(f)
if formfield:
field_list.append((f.name, formfield))
@@ -84,6 +91,8 @@ def form_for_instance(instance, form=BaseForm, formfield_callback=lambda f, **kw
opts = model._meta
field_list = []
for f in opts.fields + opts.many_to_many:
+ if not f.editable:
+ continue
current_value = f.value_from_object(instance)
formfield = formfield_callback(f, initial=current_value)
if formfield:
@@ -94,5 +103,88 @@ def form_for_instance(instance, form=BaseForm, formfield_callback=lambda f, **kw
def form_for_fields(field_list):
"Returns a Form class for the given list of Django database field instances."
- fields = SortedDictFromList([(f.name, f.formfield()) for f in field_list])
+ fields = SortedDictFromList([(f.name, f.formfield()) for f in field_list if f.editable])
return type('FormForFields', (BaseForm,), {'base_fields': fields})
+
+class QuerySetIterator(object):
+ def __init__(self, queryset, empty_label, cache_choices):
+ self.queryset, self.empty_label, self.cache_choices = queryset, empty_label, cache_choices
+
+ def __iter__(self):
+ if self.empty_label is not None:
+ yield (u"", self.empty_label)
+ for obj in self.queryset:
+ yield (obj._get_pk_val(), str(obj))
+ # Clear the QuerySet cache if required.
+ if not self.cache_choices:
+ self.queryset._result_cache = None
+
+class ModelChoiceField(ChoiceField):
+ "A ChoiceField whose choices are a model QuerySet."
+ # This class is a subclass of ChoiceField for purity, but it doesn't
+ # actually use any of ChoiceField's implementation.
+ def __init__(self, queryset, empty_label=u"---------", cache_choices=False,
+ required=True, widget=Select, label=None, initial=None, help_text=None):
+ self.queryset = queryset
+ self.empty_label = empty_label
+ self.cache_choices = cache_choices
+ # Call Field instead of ChoiceField __init__() because we don't need
+ # ChoiceField.__init__().
+ Field.__init__(self, required, widget, label, initial, help_text)
+ self.widget.choices = self.choices
+
+ def _get_choices(self):
+ # If self._choices is set, then somebody must have manually set
+ # the property self.choices. In this case, just return self._choices.
+ if hasattr(self, '_choices'):
+ return self._choices
+ # Otherwise, execute the QuerySet in self.queryset to determine the
+ # choices dynamically. Return a fresh QuerySetIterator that has not
+ # been consumed. Note that we're instantiating a new QuerySetIterator
+ # *each* time _get_choices() is called (and, thus, each time
+ # self.choices is accessed) so that we can ensure the QuerySet has not
+ # been consumed.
+ return QuerySetIterator(self.queryset, self.empty_label, self.cache_choices)
+
+ def _set_choices(self, value):
+ # This method is copied from ChoiceField._set_choices(). It's necessary
+ # because property() doesn't allow a subclass to overwrite only
+ # _get_choices without implementing _set_choices.
+ self._choices = self.widget.choices = list(value)
+
+ choices = property(_get_choices, _set_choices)
+
+ def clean(self, value):
+ Field.clean(self, value)
+ if value in ('', None):
+ return None
+ try:
+ value = self.queryset.model._default_manager.get(pk=value)
+ except self.queryset.model.DoesNotExist:
+ raise ValidationError(gettext(u'Select a valid choice. That choice is not one of the available choices.'))
+ return value
+
+class ModelMultipleChoiceField(ModelChoiceField):
+ "A MultipleChoiceField whose choices are a model QuerySet."
+ hidden_widget = MultipleHiddenInput
+ def __init__(self, queryset, cache_choices=False, required=True,
+ widget=SelectMultiple, label=None, initial=None, help_text=None):
+ super(ModelMultipleChoiceField, self).__init__(queryset, None, cache_choices,
+ required, widget, label, initial, help_text)
+
+ def clean(self, value):
+ if self.required and not value:
+ raise ValidationError(gettext(u'This field is required.'))
+ elif not self.required and not value:
+ return []
+ if not isinstance(value, (list, tuple)):
+ raise ValidationError(gettext(u'Enter a list of values.'))
+ final_values = []
+ for val in value:
+ try:
+ obj = self.queryset.model._default_manager.get(pk=val)
+ except self.queryset.model.DoesNotExist:
+ raise ValidationError(gettext(u'Select a valid choice. %s is not one of the available choices.') % val)
+ else:
+ final_values.append(obj)
+ return final_values
diff --git a/django/newforms/util.py b/django/newforms/util.py
index 2fec9e4e2e..51a8efdde2 100644
--- a/django/newforms/util.py
+++ b/django/newforms/util.py
@@ -7,7 +7,10 @@ flatatt = lambda attrs: u''.join([u' %s="%s"' % (k, escape(v)) for k, v in attrs
def smart_unicode(s):
if not isinstance(s, basestring):
- s = unicode(str(s))
+ if hasattr(s, '__unicode__'):
+ s = unicode(s)
+ else:
+ s = unicode(str(s), settings.DEFAULT_CHARSET)
elif not isinstance(s, unicode):
s = unicode(s, settings.DEFAULT_CHARSET)
return s
diff --git a/django/newforms/widgets.py b/django/newforms/widgets.py
index 585e12cc18..18bba31897 100644
--- a/django/newforms/widgets.py
+++ b/django/newforms/widgets.py
@@ -81,6 +81,14 @@ class TextInput(Input):
class PasswordInput(Input):
input_type = 'password'
+ def __init__(self, attrs=None, render_value=True):
+ self.attrs = attrs or {}
+ self.render_value = render_value
+
+ def render(self, name, value, attrs=None):
+ if not self.render_value: value=None
+ return super(PasswordInput, self).render(name, value, attrs)
+
class HiddenInput(Input):
input_type = 'hidden'
is_hidden = True
diff --git a/django/template/__init__.py b/django/template/__init__.py
index 7718801684..0d8990a42b 100644
--- a/django/template/__init__.py
+++ b/django/template/__init__.py
@@ -91,6 +91,8 @@ UNKNOWN_SOURCE="&lt;unknown source&gt;"
tag_re = re.compile('(%s.*?%s|%s.*?%s|%s.*?%s)' % (re.escape(BLOCK_TAG_START), re.escape(BLOCK_TAG_END),
re.escape(VARIABLE_TAG_START), re.escape(VARIABLE_TAG_END),
re.escape(COMMENT_TAG_START), re.escape(COMMENT_TAG_END)))
+# matches if the string is valid number
+number_re = re.compile(r'[-+]?(\d+|\d*\.\d+)$')
# global dictionary of libraries that have been loaded using get_library
libraries = {}
@@ -117,8 +119,14 @@ class TemplateDoesNotExist(Exception):
pass
class VariableDoesNotExist(Exception):
- pass
+ def __init__(self, msg, params=()):
+ self.msg = msg
+ self.params = params
+
+ def __str__(self):
+ return self.msg % self.params
+
class InvalidTemplateLibrary(Exception):
pass
@@ -574,6 +582,8 @@ class FilterExpression(object):
def args_check(name, func, provided):
provided = list(provided)
plen = len(provided)
+ # Check to see if a decorator is providing the real function.
+ func = getattr(func, '_decorated_function', func)
args, varargs, varkw, defaults = getargspec(func)
# First argument is filter input.
args.pop(0)
@@ -624,12 +634,9 @@ def resolve_variable(path, context):
(The example assumes VARIABLE_ATTRIBUTE_SEPARATOR is '.')
"""
- if path[0].isdigit():
+ if number_re.match(path):
number_type = '.' in path and float or int
- try:
- current = number_type(path)
- except ValueError:
- current = settings.TEMPLATE_STRING_IF_INVALID
+ current = number_type(path)
elif path[0] in ('"', "'") and path[0] == path[-1]:
current = path[1:-1]
else:
@@ -659,8 +666,12 @@ def resolve_variable(path, context):
except (TypeError, AttributeError):
try: # list-index lookup
current = current[int(bits[0])]
- except (IndexError, ValueError, KeyError):
- raise VariableDoesNotExist, "Failed lookup for key [%s] in %r" % (bits[0], current) # missing attribute
+ except (IndexError, # list index out of range
+ ValueError, # invalid literal for int()
+ KeyError, # current is a dict without `int(bits[0])` key
+ TypeError, # unsubscriptable object
+ ):
+ raise VariableDoesNotExist("Failed lookup for key [%s] in %r", (bits[0], current)) # missing attribute
except Exception, e:
if getattr(e, 'silent_variable_failure', False):
current = settings.TEMPLATE_STRING_IF_INVALID
@@ -806,7 +817,7 @@ class Library(object):
raise InvalidTemplateLibrary, "Unsupported arguments to Library.tag: (%r, %r)", (name, compile_function)
def tag_function(self,func):
- self.tags[func.__name__] = func
+ self.tags[getattr(func, "_decorated_function", func).__name__] = func
return func
def filter(self, name=None, filter_func=None):
@@ -830,7 +841,7 @@ class Library(object):
raise InvalidTemplateLibrary, "Unsupported arguments to Library.filter: (%r, %r)", (name, filter_func)
def filter_function(self, func):
- self.filters[func.__name__] = func
+ self.filters[getattr(func, "_decorated_function", func).__name__] = func
return func
def simple_tag(self,func):
@@ -844,9 +855,9 @@ class Library(object):
resolved_vars = [resolve_variable(var, context) for var in self.vars_to_resolve]
return func(*resolved_vars)
- compile_func = curry(generic_tag_compiler, params, defaults, func.__name__, SimpleNode)
+ compile_func = curry(generic_tag_compiler, params, defaults, getattr(func, "_decorated_function", func).__name__, SimpleNode)
compile_func.__doc__ = func.__doc__
- self.tag(func.__name__, compile_func)
+ self.tag(getattr(func, "_decorated_function", func).__name__, compile_func)
return func
def inclusion_tag(self, file_name, context_class=Context, takes_context=False):
@@ -880,9 +891,9 @@ class Library(object):
self.nodelist = t.nodelist
return self.nodelist.render(context_class(dict))
- compile_func = curry(generic_tag_compiler, params, defaults, func.__name__, InclusionNode)
+ compile_func = curry(generic_tag_compiler, params, defaults, getattr(func, "_decorated_function", func).__name__, InclusionNode)
compile_func.__doc__ = func.__doc__
- self.tag(func.__name__, compile_func)
+ self.tag(getattr(func, "_decorated_function", func).__name__, compile_func)
return func
return dec
diff --git a/django/template/context.py b/django/template/context.py
index ba23e95ab7..25397b0e1a 100644
--- a/django/template/context.py
+++ b/django/template/context.py
@@ -49,6 +49,9 @@ class Context(object):
return True
return False
+ def __contains__(self, key):
+ return self.has_key(key)
+
def get(self, key, otherwise=None):
for d in self.dicts:
if d.has_key(key):
diff --git a/django/template/defaultfilters.py b/django/template/defaultfilters.py
index 1d0f78ce12..b53375b42d 100644
--- a/django/template/defaultfilters.py
+++ b/django/template/defaultfilters.py
@@ -8,6 +8,38 @@ import random as random_module
register = Library()
+#######################
+# STRING DECORATOR #
+#######################
+
+def smart_string(obj):
+ # FUTURE: Unicode strings should probably be normalized to a specific
+ # encoding and non-unicode strings should be converted to unicode too.
+# if isinstance(obj, unicode):
+# obj = obj.encode(settings.DEFAULT_CHARSET)
+# else:
+# obj = unicode(obj, settings.DEFAULT_CHARSET)
+ # FUTURE: Replace dumb string logic below with cool unicode logic above.
+ if not isinstance(obj, basestring):
+ obj = str(obj)
+ return obj
+
+def stringfilter(func):
+ """
+ Decorator for filters which should only receive strings. The object passed
+ as the first positional argument will be converted to a string.
+ """
+ def _dec(*args, **kwargs):
+ if args:
+ args = list(args)
+ args[0] = smart_string(args[0])
+ return func(*args, **kwargs)
+
+ # Include a reference to the real function (used to check original
+ # arguments by the template parser).
+ _dec._decorated_function = getattr(func, '_decorated_function', func)
+ return _dec
+
###################
# STRINGS #
###################
@@ -16,16 +48,18 @@ register = Library()
def addslashes(value):
"Adds slashes - useful for passing strings to JavaScript, for example."
return value.replace('\\', '\\\\').replace('"', '\\"').replace("'", "\\'")
+addslashes = stringfilter(addslashes)
def capfirst(value):
"Capitalizes the first character of the value"
- value = str(value)
return value and value[0].upper() + value[1:]
-
+capfirst = stringfilter(capfirst)
+
def fix_ampersands(value):
"Replaces ampersands with ``&amp;`` entities"
from django.utils.html import fix_ampersands
return fix_ampersands(value)
+fix_ampersands = stringfilter(fix_ampersands)
def floatformat(text, arg=-1):
"""
@@ -52,7 +86,7 @@ def floatformat(text, arg=-1):
try:
d = int(arg)
except ValueError:
- return str(f)
+ return smart_string(f)
m = f - int(f)
if not m and d < 0:
return '%d' % int(f)
@@ -69,22 +103,26 @@ def linenumbers(value):
for i, line in enumerate(lines):
lines[i] = ("%0" + width + "d. %s") % (i + 1, escape(line))
return '\n'.join(lines)
+linenumbers = stringfilter(linenumbers)
def lower(value):
"Converts a string into all lowercase"
return value.lower()
+lower = stringfilter(lower)
def make_list(value):
"""
Returns the value turned into a list. For an integer, it's a list of
digits. For a string, it's a list of characters.
"""
- return list(str(value))
+ return list(value)
+make_list = stringfilter(make_list)
def slugify(value):
"Converts to lowercase, removes non-alpha chars and converts spaces to hyphens"
value = re.sub('[^\w\s-]', '', value).strip().lower()
return re.sub('[-\s]+', '-', value)
+slugify = stringfilter(slugify)
def stringformat(value, arg):
"""
@@ -96,13 +134,14 @@ def stringformat(value, arg):
of Python string formatting
"""
try:
- return ("%" + arg) % value
+ return ("%" + str(arg)) % value
except (ValueError, TypeError):
return ""
def title(value):
"Converts a string into titlecase"
return re.sub("([a-z])'([A-Z])", lambda m: m.group(0).lower(), value.title())
+title = stringfilter(title)
def truncatewords(value, arg):
"""
@@ -118,20 +157,42 @@ def truncatewords(value, arg):
if not isinstance(value, basestring):
value = str(value)
return truncate_words(value, length)
+truncatewords = stringfilter(truncatewords)
+
+def truncatewords_html(value, arg):
+ """
+ Truncates HTML after a certain number of words
+
+ Argument: Number of words to truncate after
+ """
+ from django.utils.text import truncate_html_words
+ try:
+ length = int(arg)
+ except ValueError: # invalid literal for int()
+ return value # Fail silently.
+ if not isinstance(value, basestring):
+ value = str(value)
+ return truncate_html_words(value, length)
+truncatewords_html = stringfilter(truncatewords_html)
def upper(value):
"Converts a string into all uppercase"
return value.upper()
+upper = stringfilter(upper)
def urlencode(value):
"Escapes a value for use in a URL"
import urllib
+ if not isinstance(value, basestring):
+ value = str(value)
return urllib.quote(value)
+urlencode = stringfilter(urlencode)
def urlize(value):
"Converts URLs in plain text into clickable links"
from django.utils.html import urlize
return urlize(value, nofollow=True)
+urlize = stringfilter(urlize)
def urlizetrunc(value, limit):
"""
@@ -142,10 +203,12 @@ def urlizetrunc(value, limit):
"""
from django.utils.html import urlize
return urlize(value, trim_url_limit=int(limit), nofollow=True)
+urlizetrunc = stringfilter(urlizetrunc)
def wordcount(value):
"Returns the number of words"
return len(value.split())
+wordcount = stringfilter(wordcount)
def wordwrap(value, arg):
"""
@@ -154,7 +217,8 @@ def wordwrap(value, arg):
Argument: number of characters to wrap the text at.
"""
from django.utils.text import wrap
- return wrap(str(value), int(arg))
+ return wrap(value, int(arg))
+wordwrap = stringfilter(wordwrap)
def ljust(value, arg):
"""
@@ -162,7 +226,8 @@ def ljust(value, arg):
Argument: field size
"""
- return str(value).ljust(int(arg))
+ return value.ljust(int(arg))
+ljust = stringfilter(ljust)
def rjust(value, arg):
"""
@@ -170,15 +235,18 @@ def rjust(value, arg):
Argument: field size
"""
- return str(value).rjust(int(arg))
+ return value.rjust(int(arg))
+rjust = stringfilter(rjust)
def center(value, arg):
"Centers the value in a field of a given width"
- return str(value).center(int(arg))
+ return value.center(int(arg))
+center = stringfilter(center)
def cut(value, arg):
"Removes all values of arg from the given string"
return value.replace(arg, '')
+cut = stringfilter(cut)
###################
# HTML STRINGS #
@@ -188,15 +256,18 @@ def escape(value):
"Escapes a string's HTML"
from django.utils.html import escape
return escape(value)
+escape = stringfilter(escape)
def linebreaks(value):
"Converts newlines into <p> and <br />s"
from django.utils.html import linebreaks
return linebreaks(value)
+linebreaks = stringfilter(linebreaks)
def linebreaksbr(value):
"Converts newlines into <br />s"
return value.replace('\n', '<br />')
+linebreaksbr = stringfilter(linebreaksbr)
def removetags(value, tags):
"Removes a space separated list of [X]HTML tags from the output"
@@ -207,13 +278,13 @@ def removetags(value, tags):
value = starttag_re.sub('', value)
value = endtag_re.sub('', value)
return value
+removetags = stringfilter(removetags)
def striptags(value):
"Strips all [X]HTML tags"
from django.utils.html import strip_tags
- if not isinstance(value, basestring):
- value = str(value)
return strip_tags(value)
+striptags = stringfilter(striptags)
###################
# LISTS #
@@ -248,7 +319,7 @@ def first(value):
def join(value, arg):
"Joins a list with a string, like Python's ``str.join(list)``"
try:
- return arg.join(map(str, value))
+ return arg.join(map(smart_string, value))
except AttributeError: # fail silently but nicely
return value
@@ -534,6 +605,7 @@ register.filter(timesince)
register.filter(timeuntil)
register.filter(title)
register.filter(truncatewords)
+register.filter(truncatewords_html)
register.filter(unordered_list)
register.filter(upper)
register.filter(urlencode)
diff --git a/django/template/defaulttags.py b/django/template/defaulttags.py
index 3f3f4bda56..6aa53cfd8b 100644
--- a/django/template/defaulttags.py
+++ b/django/template/defaulttags.py
@@ -315,6 +315,25 @@ class TemplateTagNode(Node):
def render(self, context):
return self.mapping.get(self.tagtype, '')
+class URLNode(Node):
+ def __init__(self, view_name, args, kwargs):
+ self.view_name = view_name
+ self.args = args
+ self.kwargs = kwargs
+
+ def render(self, context):
+ from django.core.urlresolvers import reverse, NoReverseMatch
+ args = [arg.resolve(context) for arg in self.args]
+ kwargs = dict([(k, v.resolve(context)) for k, v in self.kwargs.items()])
+ try:
+ return reverse(self.view_name, args=args, kwargs=kwargs)
+ except NoReverseMatch:
+ try:
+ project_name = settings.SETTINGS_MODULE.split('.')[0]
+ return reverse(project_name + '.' + self.view_name, args=args, kwargs=kwargs)
+ except NoReverseMatch:
+ return ''
+
class WidthRatioNode(Node):
def __init__(self, val_expr, max_expr, max_width):
self.val_expr = val_expr
@@ -868,6 +887,50 @@ def templatetag(parser, token):
return TemplateTagNode(tag)
templatetag = register.tag(templatetag)
+def url(parser, token):
+ """
+ Returns an absolute URL matching given view with its parameters. This is a
+ way to define links that aren't tied to a particular url configuration:
+
+ {% url path.to.some_view arg1,arg2,name1=value1 %}
+
+ The first argument is a path to a view. It can be an absolute python path
+ or just ``app_name.view_name`` without the project name if the view is
+ located inside the project. Other arguments are comma-separated values
+ that will be filled in place of positional and keyword arguments in the
+ URL. All arguments for the URL should be present.
+
+ For example if you have a view ``app_name.client`` taking client's id and
+ the corresponding line in a urlconf looks like this:
+
+ ('^client/(\d+)/$', 'app_name.client')
+
+ and this app's urlconf is included into the project's urlconf under some
+ path:
+
+ ('^clients/', include('project_name.app_name.urls'))
+
+ then in a template you can create a link for a certain client like this:
+
+ {% url app_name.client client.id %}
+
+ The URL will look like ``/clients/client/123/``.
+ """
+ bits = token.contents.split(' ', 2)
+ if len(bits) < 2:
+ raise TemplateSyntaxError, "'%s' takes at least one argument (path to a view)" % bits[0]
+ args = []
+ kwargs = {}
+ if len(bits) > 2:
+ for arg in bits[2].split(','):
+ if '=' in arg:
+ k, v = arg.split('=', 1)
+ kwargs[k] = parser.compile_filter(v)
+ else:
+ args.append(parser.compile_filter(arg))
+ return URLNode(bits[1], args, kwargs)
+url = register.tag(url)
+
#@register.tag
def widthratio(parser, token):
"""
diff --git a/django/template/loader_tags.py b/django/template/loader_tags.py
index e329b1bb36..4439e0b010 100644
--- a/django/template/loader_tags.py
+++ b/django/template/loader_tags.py
@@ -129,7 +129,7 @@ def do_block(parser, token):
parser.__loaded_blocks.append(block_name)
except AttributeError: # parser.__loaded_blocks isn't a list yet
parser.__loaded_blocks = [block_name]
- nodelist = parser.parse(('endblock',))
+ nodelist = parser.parse(('endblock', 'endblock %s' % block_name))
parser.delete_first_token()
return BlockNode(block_name, nodelist)
diff --git a/django/test/__init__.py b/django/test/__init__.py
index e69de29bb2..554e72bad3 100644
--- a/django/test/__init__.py
+++ b/django/test/__init__.py
@@ -0,0 +1,6 @@
+"""
+Django Unit Test and Doctest framework.
+"""
+
+from django.test.client import Client
+from django.test.testcases import TestCase
diff --git a/django/test/client.py b/django/test/client.py
index 6e0b443f83..682dd01261 100644
--- a/django/test/client.py
+++ b/django/test/client.py
@@ -1,11 +1,18 @@
+import sys
from cStringIO import StringIO
+from urlparse import urlparse
+from django.conf import settings
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.test import signals
from django.utils.functional import curry
+BOUNDARY = 'BoUnDaRyStRiNg'
+MULTIPART_CONTENT = 'multipart/form-data; boundary=%s' % BOUNDARY
+
class ClientHandler(BaseHandler):
"""
A HTTP Handler that can be used for testing purposes.
@@ -97,7 +104,16 @@ class Client:
def __init__(self, **defaults):
self.handler = ClientHandler()
self.defaults = defaults
- self.cookie = SimpleCookie()
+ self.cookies = SimpleCookie()
+ self.session = {}
+ self.exc_info = None
+
+ def store_exc_info(self, *args, **kwargs):
+ """
+ Utility method that can be used to store exceptions when they are
+ generated by a view.
+ """
+ self.exc_info = sys.exc_info()
def request(self, **request):
"""
@@ -108,7 +124,7 @@ class Client:
"""
environ = {
- 'HTTP_COOKIE': self.cookie,
+ 'HTTP_COOKIE': self.cookies,
'PATH_INFO': '/',
'QUERY_STRING': '',
'REQUEST_METHOD': 'GET',
@@ -126,6 +142,9 @@ class Client:
on_template_render = curry(store_rendered_templates, data)
dispatcher.connect(on_template_render, signal=signals.template_rendered)
+ # Capture exceptions created by the handler
+ dispatcher.connect(self.store_exc_info, signal=got_request_exception)
+
response = self.handler(environ)
# Add any rendered template detail to the response
@@ -140,9 +159,20 @@ class Client:
else:
setattr(response, detail, None)
+ # Look for a signalled exception and reraise it
+ if self.exc_info:
+ raise self.exc_info[1], None, self.exc_info[2]
+
+ # Update persistent cookie and session data
if response.cookies:
- self.cookie.update(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):
@@ -158,19 +188,20 @@ class Client:
return self.request(**r)
- def post(self, path, data={}, **extra):
+ def post(self, path, data={}, content_type=MULTIPART_CONTENT, **extra):
"Request a response from the server using POST."
- BOUNDARY = 'BoUnDaRyStRiNg'
+ if content_type is MULTIPART_CONTENT:
+ post_data = encode_multipart(BOUNDARY, data)
+ else:
+ post_data = data
- encoded = encode_multipart(BOUNDARY, data)
- stream = StringIO(encoded)
r = {
- 'CONTENT_LENGTH': len(encoded),
- 'CONTENT_TYPE': 'multipart/form-data; boundary=%s' % BOUNDARY,
+ 'CONTENT_LENGTH': len(post_data),
+ 'CONTENT_TYPE': content_type,
'PATH_INFO': path,
'REQUEST_METHOD': 'POST',
- 'wsgi.input': stream,
+ 'wsgi.input': StringIO(post_data),
}
r.update(extra)
@@ -192,7 +223,7 @@ class Client:
if response.status_code != 302:
return False
- login_path, data = response['Location'].split('?')
+ _, _, login_path, _, data, _= urlparse(response['Location'])
next = data.split('=')[1]
# Second, GET the login page; required to set up cookies
@@ -209,7 +240,8 @@ class Client:
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 response['Location'] != path:
+ if (response.status_code != 302 or
+ urlparse(response['Location'])[2] != path):
return False
# Since we are logged in, request the actual page again
diff --git a/django/test/simple.py b/django/test/simple.py
index 88e6b49925..200f150594 100644
--- a/django/test/simple.py
+++ b/django/test/simple.py
@@ -1,6 +1,5 @@
import unittest, doctest
from django.conf import settings
-from django.core import management
from django.test.utils import setup_test_environment, teardown_test_environment
from django.test.utils import create_test_db, destroy_test_db
from django.test.testcases import OutputChecker, DocTestRunner
@@ -64,6 +63,8 @@ def run_tests(module_list, verbosity=1, extra_tests=[]):
looking for doctests and unittests in models.py or tests.py within
the module. A list of 'extra' tests may also be provided; these tests
will be added to the test suite.
+
+ Returns the number of tests that failed.
"""
setup_test_environment()
@@ -78,8 +79,10 @@ def run_tests(module_list, verbosity=1, extra_tests=[]):
old_name = settings.DATABASE_NAME
create_test_db(verbosity)
- management.syncdb(verbosity, interactive=False)
- unittest.TextTestRunner(verbosity=verbosity).run(suite)
+ result = unittest.TextTestRunner(verbosity=verbosity).run(suite)
destroy_test_db(old_name, verbosity)
teardown_test_environment()
+
+ return len(result.failures)
+ \ No newline at end of file
diff --git a/django/test/testcases.py b/django/test/testcases.py
index 1cfef6f19e..2bfb9a733a 100644
--- a/django/test/testcases.py
+++ b/django/test/testcases.py
@@ -1,5 +1,7 @@
import re, doctest, unittest
from django.db import transaction
+from django.core import management
+from django.db.models import get_apps
normalize_long_ints = lambda s: re.sub(r'(?<![\w])(\d+)L(?![\w])', '\\1', s)
@@ -28,3 +30,21 @@ class DocTestRunner(doctest.DocTestRunner):
from django.db import transaction
transaction.rollback_unless_managed()
+class TestCase(unittest.TestCase):
+ def install_fixtures(self):
+ """If the Test Case class has a 'fixtures' member, clear the database and
+ install the named fixtures at the start of each test.
+
+ """
+ management.flush(verbosity=0, interactive=False)
+ if hasattr(self, 'fixtures'):
+ management.load_data(self.fixtures, verbosity=0)
+
+ def run(self, result=None):
+ """Wrapper around default run method so that user-defined Test Cases
+ automatically call install_fixtures without having to include a call to
+ super().
+
+ """
+ self.install_fixtures()
+ super(TestCase, self).run(result)
diff --git a/django/test/utils.py b/django/test/utils.py
index 8548303dea..70b7f3cdbe 100644
--- a/django/test/utils.py
+++ b/django/test/utils.py
@@ -1,6 +1,7 @@
import sys, time
from django.conf import settings
from django.db import connection, backend, get_creation_module
+from django.core import management
from django.dispatch import dispatcher
from django.test import signals
from django.template import Template
@@ -90,6 +91,8 @@ def create_test_db(verbosity=1, autoclobber=False):
connection.close()
settings.DATABASE_NAME = TEST_DATABASE_NAME
+ management.syncdb(verbosity, interactive=False)
+
# Get a cursor (even though we don't need one yet). This has
# the side effect of initializing the test database.
cursor = connection.cursor()
diff --git a/django/utils/datastructures.py b/django/utils/datastructures.py
index 9bec7a5df7..e924e4edbc 100644
--- a/django/utils/datastructures.py
+++ b/django/utils/datastructures.py
@@ -16,8 +16,11 @@ class MergeDict(object):
def __contains__(self, key):
return self.has_key(key)
+
+ def __copy__(self):
+ return self.__class__(*self.dicts)
- def get(self, key, default):
+ def get(self, key, default=None):
try:
return self[key]
except KeyError:
@@ -42,6 +45,10 @@ class MergeDict(object):
if dict.has_key(key):
return True
return False
+
+ def copy(self):
+ """ returns a copy of this object"""
+ return self.__copy__()
class SortedDict(dict):
"A dictionary that keeps its keys in the order in which they're inserted."
@@ -85,6 +92,13 @@ class SortedDict(dict):
"Returns the value of the item at the given zero-based index."
return self[self.keyOrder[index]]
+ def copy(self):
+ "Returns a copy of this object."
+ # This way of initialising the copy means it works for subclasses, too.
+ obj = self.__class__(self)
+ obj.keyOrder = self.keyOrder
+ return obj
+
class MultiValueDictKeyError(KeyError):
pass
diff --git a/django/utils/dateformat.py b/django/utils/dateformat.py
index 00eb9fe617..e3712175af 100644
--- a/django/utils/dateformat.py
+++ b/django/utils/dateformat.py
@@ -16,7 +16,7 @@ from django.utils.tzinfo import LocalTimezone
from calendar import isleap, monthrange
import re, time
-re_formatchars = re.compile(r'(?<!\\)([aABdDfFgGhHiIjlLmMnNOPrsStTUwWyYzZ])')
+re_formatchars = re.compile(r'(?<!\\)([aAbBdDfFgGhHiIjlLmMnNOPrsStTUwWyYzZ])')
re_escaped = re.compile(r'\\(.)')
class Formatter(object):
@@ -110,6 +110,10 @@ class DateFormat(TimeFormat):
if hasattr(self.data, 'hour') and not self.timezone:
self.timezone = LocalTimezone(dt)
+ def b(self):
+ "Month, textual, 3 letters, lowercase; e.g. 'jan'"
+ return MONTHS_3[self.data.month]
+
def d(self):
"Day of the month, 2 digits with leading zeros; i.e. '01' to '31'"
return '%02d' % self.data.day
diff --git a/django/utils/feedgenerator.py b/django/utils/feedgenerator.py
index 2eb27a40b7..9397789d6a 100644
--- a/django/utils/feedgenerator.py
+++ b/django/utils/feedgenerator.py
@@ -40,7 +40,7 @@ class SyndicationFeed(object):
"Base class for all syndication feeds. Subclasses should provide write()"
def __init__(self, title, link, description, language=None, author_email=None,
author_name=None, author_link=None, subtitle=None, categories=None,
- feed_url=None):
+ feed_url=None, feed_copyright=None):
self.feed = {
'title': title,
'link': link,
@@ -52,12 +52,13 @@ class SyndicationFeed(object):
'subtitle': subtitle,
'categories': categories or (),
'feed_url': feed_url,
+ 'feed_copyright': feed_copyright,
}
self.items = []
def add_item(self, title, link, description, author_email=None,
author_name=None, author_link=None, pubdate=None, comments=None,
- unique_id=None, enclosure=None, categories=()):
+ unique_id=None, enclosure=None, categories=(), item_copyright=None):
"""
Adds an item to the feed. All args are expected to be Python Unicode
objects except pubdate, which is a datetime.datetime object, and
@@ -75,6 +76,7 @@ class SyndicationFeed(object):
'unique_id': unique_id,
'enclosure': enclosure,
'categories': categories or (),
+ 'item_copyright': item_copyright,
})
def num_items(self):
@@ -128,6 +130,8 @@ class RssFeed(SyndicationFeed):
handler.addQuickElement(u"language", self.feed['language'])
for cat in self.feed['categories']:
handler.addQuickElement(u"category", cat)
+ if self.feed['feed_copyright'] is not None:
+ handler.addQuickElement(u"copyright", self.feed['feed_copyright'])
self.write_items(handler)
self.endChannelElement(handler)
handler.endElement(u"rss")
@@ -212,6 +216,8 @@ class Atom1Feed(SyndicationFeed):
handler.addQuickElement(u"subtitle", self.feed['subtitle'])
for cat in self.feed['categories']:
handler.addQuickElement(u"category", "", {u"term": cat})
+ if self.feed['feed_copyright'] is not None:
+ handler.addQuickElement(u"rights", self.feed['feed_copyright'])
self.write_items(handler)
handler.endElement(u"feed")
@@ -252,10 +258,14 @@ class Atom1Feed(SyndicationFeed):
u"length": item['enclosure'].length,
u"type": item['enclosure'].mime_type})
- # Categories:
+ # Categories.
for cat in item['categories']:
handler.addQuickElement(u"category", u"", {u"term": cat})
+ # Rights.
+ if item['item_copyright'] is not None:
+ handler.addQuickElement(u"rights", item['item_copyright'])
+
handler.endElement(u"entry")
# This isolates the decision of what the system default is, so calling code can
diff --git a/django/utils/text.py b/django/utils/text.py
index 217f42491b..1c1c456e2d 100644
--- a/django/utils/text.py
+++ b/django/utils/text.py
@@ -41,6 +41,66 @@ def truncate_words(s, num):
words.append('...')
return ' '.join(words)
+def truncate_html_words(s, num):
+ """
+ Truncates html to a certain number of words (not counting tags and comments).
+ Closes opened tags if they were correctly closed in the given html.
+ """
+ length = int(num)
+ if length <= 0:
+ return ''
+ html4_singlets = ('br', 'col', 'link', 'base', 'img', 'param', 'area', 'hr', 'input')
+ # Set up regular expressions
+ re_words = re.compile(r'&.*?;|<.*?>|([A-Za-z0-9][\w-]*)')
+ re_tag = re.compile(r'<(/)?([^ ]+?)(?: (/)| .*?)?>')
+ # Count non-HTML words and keep note of open tags
+ pos = 0
+ ellipsis_pos = 0
+ words = 0
+ open_tags = []
+ while words <= length:
+ m = re_words.search(s, pos)
+ if not m:
+ # Checked through whole string
+ break
+ pos = m.end(0)
+ if m.group(1):
+ # It's an actual non-HTML word
+ words += 1
+ if words == length:
+ ellipsis_pos = pos
+ continue
+ # Check for tag
+ tag = re_tag.match(m.group(0))
+ if not tag or ellipsis_pos:
+ # Don't worry about non tags or tags after our truncate point
+ continue
+ closing_tag, tagname, self_closing = tag.groups()
+ tagname = tagname.lower() # Element names are always case-insensitive
+ if self_closing or tagname in html4_singlets:
+ pass
+ elif closing_tag:
+ # Check for match in open tags list
+ try:
+ i = open_tags.index(tagname)
+ except ValueError:
+ pass
+ else:
+ # SGML: An end tag closes, back to the matching start tag, all unclosed intervening start tags with omitted end tags
+ open_tags = open_tags[i+1:]
+ else:
+ # Add it to the start of the open tags list
+ open_tags.insert(0, tagname)
+ if words <= length:
+ # Don't try to close tags if we don't need to truncate
+ return s
+ out = s[:ellipsis_pos] + ' ...'
+ # Close any tags still open
+ for tag in open_tags:
+ out += '</%s>' % tag
+ # Return string
+ return out
+
def get_valid_filename(s):
"""
Returns the given string converted to a string that can be used for a clean
diff --git a/django/views/defaults.py b/django/views/defaults.py
index 8837dc4834..701aebabd6 100644
--- a/django/views/defaults.py
+++ b/django/views/defaults.py
@@ -75,7 +75,7 @@ def page_not_found(request, template_name='404.html'):
request_path
The path of the requested URL (e.g., '/app/pages/bad_page/')
"""
- t = loader.get_template(template_name)
+ t = loader.get_template(template_name) # You need to create a 404.html template.
return http.HttpResponseNotFound(t.render(RequestContext(request, {'request_path': request.path})))
def server_error(request, template_name='500.html'):
@@ -85,5 +85,5 @@ def server_error(request, template_name='500.html'):
Templates: `500.html`
Context: None
"""
- t = loader.get_template(template_name)
+ t = loader.get_template(template_name) # You need to create a 500.html template.
return http.HttpResponseServerError(t.render(Context({})))
diff --git a/django/views/generic/list_detail.py b/django/views/generic/list_detail.py
index 1836ce4a9f..16d55202da 100644
--- a/django/views/generic/list_detail.py
+++ b/django/views/generic/list_detail.py
@@ -33,6 +33,12 @@ def object_list(request, queryset, paginate_by=None, page=None,
number of pages, total
hits
number of objects, total
+ last_on_page
+ the result number of the last of object in the
+ object_list (1-indexed)
+ first_on_page
+ the result number of the first object in the
+ object_list (1-indexed)
"""
if extra_context is None: extra_context = {}
queryset = queryset._clone()
@@ -57,6 +63,8 @@ def object_list(request, queryset, paginate_by=None, page=None,
'page': page,
'next': page + 1,
'previous': page - 1,
+ 'last_on_page': paginator.last_on_page(page - 1),
+ 'first_on_page': paginator.first_on_page(page - 1),
'pages': paginator.pages,
'hits' : paginator.hits,
}, context_processors)
diff --git a/docs/add_ons.txt b/docs/add_ons.txt
index d937eb2141..1756fe5720 100644
--- a/docs/add_ons.txt
+++ b/docs/add_ons.txt
@@ -139,6 +139,15 @@ See the `flatpages documentation`_.
.. _flatpages documentation: ../flatpages/
+localflavor
+===========
+
+**New in Django development version**
+
+A collection of various Django snippets that are useful only for a particular
+country or culture. For example, ``django.contrib.localflavor.usa.forms``
+contains a ``USZipCodeField`` that you can use to validate U.S. zip codes.
+
markup
======
diff --git a/docs/authentication.txt b/docs/authentication.txt
index ef30879ae0..aff336f67a 100644
--- a/docs/authentication.txt
+++ b/docs/authentication.txt
@@ -86,10 +86,10 @@ objects in the same way as any other `Django model`_::
myuser.groups.add(group, group,...)
myuser.groups.remove(group, group,...)
myuser.groups.clear()
- myuser.permissions = [permission_list]
- myuser.permissions.add(permission, permission, ...)
- myuser.permissions.remove(permission, permission, ...]
- myuser.permissions.clear()
+ myuser.user_permissions = [permission_list]
+ myuser.user_permissions.add(permission, permission, ...)
+ myuser.user_permissions.remove(permission, permission, ...]
+ myuser.user_permissions.clear()
In addition to those automatic API methods, ``User`` objects have the following
custom methods:
@@ -317,6 +317,16 @@ This example shows how you might use both ``authenticate()`` and ``login()``::
else:
# Return an 'invalid login' error message.
+Manually checking a user's password
+-----------------------------------
+
+If you'd like to manually authenticate a user by comparing a
+plain-text password to the hashed password in the database, use the
+convenience function `django.contrib.auth.models.check_password`. It
+takes two arguments: the plain-text password to check, and the full
+value of a user's ``password`` field in the database to check against,
+and returns ``True`` if they match, ``False`` otherwise.
+
How to log a user out
---------------------
@@ -388,7 +398,7 @@ To do this, add the following line to your URLconf::
(r'^accounts/login/$', 'django.contrib.auth.views.login'),
-Here's what ``django.contrib.auth.views.login`` does::
+Here's what ``django.contrib.auth.views.login`` does:
* If called via ``GET``, it displays a login form that POSTs to the same
URL. More on this in a bit.
@@ -444,6 +454,147 @@ block::
.. _forms documentation: ../forms/
.. _site framework docs: ../sites/
+Other built-in views
+--------------------
+
+In addition to the `login` view, the authentication system includes a
+few other useful built-in views:
+
+``django.contrib.auth.views.logout``
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+**Description:**
+
+Logs a user out.
+
+**Optional arguments:**
+
+ * ``template_name``: The full name of a template to display after
+ logging the user out. This will default to
+ ``registration/logged_out.html`` if no argument is supplied.
+
+**Template context:**
+
+ * ``title``: The string "Logged out", localized.
+
+``django.contrib.auth.views.logout_then_login``
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+**Description:**
+
+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.
+
+``django.contrib.auth.views.password_change``
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+**Description:**
+
+Allows a user to change their password.
+
+**Optional arguments:**
+
+ * ``template_name``: The full name of a template to use for
+ displaying the password change form. This will default to
+ ``registration/password_change_form.html`` if not supplied.
+
+**Template context:**
+
+ * ``form``: The password change form.
+
+``django.contrib.auth.views.password_change_done``
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+**Description:**
+
+The page shown after a user has changed their password.
+
+**Optional arguments:**
+
+ * ``template_name``: The full name of a template to use. This will
+ default to ``registration/password_change_done.html`` if not
+ supplied.
+
+``django.contrib.auth.views.password_reset``
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+**Description:**
+
+Allows a user to reset their password, and sends them the new password
+in an email.
+
+**Optional arguments:**
+
+ * ``template_name``: The full name of a template to use for
+ displaying the password reset form. This will default to
+ ``registration/password_reset_form.html`` if not supplied.
+
+ * ``email_template_name``: The full name of a template to use for
+ generating the email with the new password. This will default to
+ ``registration/password_reset_email.html`` if not supplied.
+
+**Template context:**
+
+ * ``form``: The form for resetting the user's password.
+
+``django.contrib.auth.views.password_reset_done``
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+**Description:**
+
+The page shown after a user has reset their password.
+
+**Optional arguments:**
+
+ * ``template_name``: The full name of a template to use. This will
+ default to ``registration/password_reset_done.html`` if not
+ supplied.
+
+``django.contrib.auth.views.redirect_to_login``
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+**Description:**
+
+Redirects to the login page, and then back to another URL after a
+successful login.
+
+**Required arguments:**
+
+ * ``next``: The URL to redirect to after a successful login.
+
+**Optional arguments:**
+
+ * ``login_url``: The URL of the login page to redirect to. This
+ will default to ``/accounts/login/`` if not supplied.
+
+Built-in manipulators
+---------------------
+
+If you don't want to use the built-in views, but want the convenience
+of not having to write manipulators for this functionality, the
+authentication system provides several built-in manipulators:
+
+ * ``django.contrib.auth.forms.AdminPasswordChangeForm``: A
+ manipulator used in the admin interface to change a user's
+ password.
+
+ * ``django.contrib.auth.forms.AuthenticationForm``: A manipulator
+ for logging a user in.
+
+ * ``django.contrib.auth.forms.PasswordChangeForm``: A manipulator
+ for allowing a user to change their password.
+
+ * ``django.contrib.auth.forms.PasswordResetForm``: A manipulator
+ for resetting a user's password and emailing the new password to
+ them.
+
+ * ``django.contrib.auth.forms.UserCreationForm``: A manipulator
+ for creating a new user.
+
Limiting access to logged-in users that pass a test
---------------------------------------------------
@@ -813,13 +964,13 @@ The ``authenticate`` method takes credentials as keyword arguments. Most of
the time, it'll just look like this::
class MyBackend:
- def authenticate(username=None, password=None):
+ def authenticate(self, username=None, password=None):
# Check the username/password and return a User.
But it could also authenticate a token, like so::
class MyBackend:
- def authenticate(token=None):
+ def authenticate(self, token=None):
# Check the token and return a User.
Either way, ``authenticate`` should check the credentials it gets, and it
diff --git a/docs/contributing.txt b/docs/contributing.txt
index d802d3eaf6..8364405775 100644
--- a/docs/contributing.txt
+++ b/docs/contributing.txt
@@ -195,7 +195,7 @@ The second part of this workflow involves a set of flags the describe what the
ticket has or needs in order to be "ready for checkin":
"Has patch"
- The means the ticket has an associated patch_. These will be
+ This means the ticket has an associated patch_. These will be
reviewed to see if the patch is "good".
"Needs documentation"
@@ -212,6 +212,33 @@ ticket has or needs in order to be "ready for checkin":
ready for checkin. This could mean the patch no longer applies
cleanly, or that the code doesn't live up to our standards.
+A ticket can be resolved in a number of ways:
+
+ "fixed"
+ Used by one of the core developers once a patch has been rolled into
+ Django and the issue is fixed.
+
+ "invalid"
+ Used if the ticket is found to be incorrect or a user error.
+
+ "wontfix"
+ Used when a core developer decides that this request is not
+ appropriate for consideration in Django. This is usually chosen after
+ discussion in the ``django-developers`` mailing list, and you should
+ feel free to join in when it's something you care about.
+
+ "duplicate"
+ Used when another ticket covers the same issue. By closing duplicate
+ tickets, we keep all the discussion in one place, which helps everyone.
+
+ "worksforme"
+ Used when the triage team is unable to replicate the original bug.
+
+If you believe that the ticket was closed in error -- because you're
+still having the issue, or it's popped up somewhere else, or the triagers have
+-- made a mistake, please reopen the ticket and tell us why. Please do not
+reopen tickets that have been marked as "wontfix" by core developers.
+
.. _required details: `Reporting bugs`_
.. _good patch: `Patch style`_
.. _patch: `Submitting patches`_
@@ -276,9 +303,11 @@ Please follow these coding standards when writing code for inclusion in Django:
def my_view(req, foo):
# ...
- * Please don't put your name in the code. While we appreciate all
- contributions to Django, our policy is not to publish individual
- developer names in code -- for instance, at the top of Python modules.
+ * Our policy is to keep the names of developers and contributors
+ in the ``AUTHORS`` file distributed with Django, so please don't include
+ your name in the actual code. Feel free to include a change to the
+ ``AUTHORS`` file in your patch if you make more than a single trivial
+ change.
Committing code
===============
@@ -484,6 +513,29 @@ Alternatively, you can use a symlink called ``django`` that points to the
location of the branch's ``django`` package. If you want to switch back, just
change the symlink to point to the old code.
+A third option is to use a `path file`_ (``<something>.pth``) which should
+work on all systems (including Windows, which doesn't have symlinks
+available). First, make sure there are no files, directories or symlinks named
+``django`` in your ``site-packages`` directory. Then create a text file named
+``django.pth`` and save it to your ``site-packages`` directory. That file
+should contain a path to your copy of Django on a single line and optional
+comments. Here is an example that points to multiple branches. Just uncomment
+the line for the branch you want to use ('Trunk' in this example) and make
+sure all other lines are commented::
+
+ # Trunk is a svn checkout of:
+ # http://code.djangoproject.com/svn/django/trunk/
+ #
+ /path/to/trunk
+
+ # <branch> is a svn checkout of:
+ # http://code.djangoproject.com/svn/django/branches/<branch>/
+ #
+ #/path/to/<branch>
+
+ # On windows a path may look like this:
+ # C:/path/to/<branch>
+
If you're using Django 0.95 or earlier and installed it using
``python setup.py install``, you'll have a directory called something like
``Django-0.95-py2.4.egg`` instead of ``django``. In this case, edit the file
@@ -491,6 +543,8 @@ If you're using Django 0.95 or earlier and installed it using
file. Then copy the branch's version of the ``django`` directory into
``site-packages``.
+.. _path file: http://docs.python.org/lib/module-site.html
+
Official releases
=================
diff --git a/docs/db-api.txt b/docs/db-api.txt
index 99bb30054b..64db3def96 100644
--- a/docs/db-api.txt
+++ b/docs/db-api.txt
@@ -6,7 +6,7 @@ Once you've created your `data models`_, Django automatically gives you a
database-abstraction API that lets you create, retrieve, update and delete
objects. This document explains that API.
-.. _`data models`: http://www.djangoproject.com/documentation/model_api/
+.. _`data models`: ../model_api/
Throughout this reference, we'll refer to the following models, which comprise
a weblog application::
@@ -85,7 +85,7 @@ There's no way to tell what the value of an ID will be before you call
unless you explicitly specify ``primary_key=True`` on a field. See the
`AutoField documentation`_.)
-.. _AutoField documentation: http://www.djangoproject.com/documentation/model_api/#autofield
+.. _AutoField documentation: ../model_api/#autofield
Explicitly specifying auto-primary-key values
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -596,6 +596,21 @@ related ``Person`` *and* the related ``City``::
Note that ``select_related()`` does not follow foreign keys that have
``null=True``.
+Usually, using ``select_related()`` can vastly improve performance because your
+app can avoid many database calls. However, in situations with deeply nested
+sets of relationships ``select_related()`` can sometimes end up following "too
+many" relations, and can generate queries so large that they end up being slow.
+
+In these situations, you can use the ``depth`` argument to ``select_related()``
+to control how many "levels" of relations ``select_related()`` will actually
+follow::
+
+ b = Book.objects.select_related(depth=1).get(id=4)
+ p = b.author # Doesn't hit the database.
+ c = p.hometown # Requires a database call.
+
+The ``depth`` argument is new in the Django development version.
+
``extra(select=None, where=None, params=None, tables=None)``
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -1621,6 +1636,15 @@ For example, this deletes all ``Entry`` objects with a ``pub_date`` year of
Entry.objects.filter(pub_date__year=2005).delete()
+When Django deletes an object, it emulates the behavior of the SQL
+constraint ``ON DELETE CASCADE`` -- in other words, any objects which
+had foreign keys pointing at the object to be deleted will be deleted
+along with it. For example::
+
+ b = Blog.objects.get(pk=1)
+ # This will delete the Blog and all of its Entry objects.
+ b.delete()
+
Note that ``delete()`` is the only ``QuerySet`` method that is not exposed on a
``Manager`` itself. This is a safety mechanism to prevent you from accidentally
requesting ``Entry.objects.delete()``, and deleting *all* the entries. If you
@@ -1777,4 +1801,4 @@ interface to your database. You can access your database via other tools,
programming languages or database frameworks; there's nothing Django-specific
about your database.
-.. _Executing custom SQL: http://www.djangoproject.com/documentation/model_api/#executing-custom-sql
+.. _Executing custom SQL: ../model_api/#executing-custom-sql
diff --git a/docs/distributions.txt b/docs/distributions.txt
new file mode 100644
index 0000000000..a77d3a1959
--- /dev/null
+++ b/docs/distributions.txt
@@ -0,0 +1,76 @@
+===================================
+Third-party distributions of Django
+===================================
+
+Several third-party distributors are now providing versions of Django integrated
+with their package-management systems. These can make installation and upgrading
+much easier for users of Django since the integration includes the ability to
+automatically install dependancies (like database adapters) that Django
+requires.
+
+Typically, these packages are based on the latest stable release of Django, so
+if you want to use the development version of Django you'll need to follow the
+instructions for `installing the development version`_ from our Subversion
+repository.
+
+.. _installing the development version: ../install/#installing-the-development-version
+
+Linux distributions
+===================
+
+Debian
+------
+
+A `packaged version of Django`_ is available for `Debian GNU/Linux`_, and can be
+installed from either the "testing" or the "unstable" repositories by typing
+``apt-get install python-django``.
+
+When you install this package, ``apt`` will recommend installing a database
+adapter; you should select and install the adapter for whichever database you
+plan to use with Django.
+
+.. _Debian GNU/Linux: http://www.debian.org/
+.. _packaged version of Django: http://packages.debian.org/testing/python/python-django
+
+Ubuntu
+------
+
+The Debian ``python-django`` package is also available for `Ubuntu Linux`_, in
+the "universe" repository for Ubuntu 7.04 ("Feisty Fawn"). The `current Ubuntu
+package`_ is also based on Django 0.95.1 and can be installed in the same
+fashion as for Debian.
+
+.. _Ubuntu Linux: http://www.ubuntu.com/
+.. _current Ubuntu package: http://packages.ubuntu.com/feisty/python/python-django
+
+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``.
+
+.. _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
+
+Gentoo
+------
+
+A Django build is available for `Gentoo Linux`_, and is based on Django 0.95.1.
+The `current Gentoo build`_ can be installed by typing ``emerge Django``.
+
+.. _Gentoo Linux: http://www.gentoo.org/
+.. _current Gentoo build: http://packages.gentoo.org/packages/?category=dev-python;name=django
+
+For distributors
+================
+
+If you'd like to package Django for distribution, we'd be happy to help out!
+Please join the `django-developers mailing list`_ and introduce yourself.
+
+We also encourage all distributors to subscribe to the `django-announce mailing
+list`_, which is a (very) low-traffic list for announcing new releases of Django
+and important bugfixes.
+
+.. _django-developers mailing list: http://groups.google.com/group/django-developers/
+.. _django-announce mailing list: http://groups.google.com/group/django-announce/
diff --git a/docs/django-admin.txt b/docs/django-admin.txt
index 310e8dff0e..371c44e010 100644
--- a/docs/django-admin.txt
+++ b/docs/django-admin.txt
@@ -17,7 +17,12 @@ two things for you before delegating to ``django-admin.py``:
The ``django-admin.py`` script should be on your system path if you installed
Django via its ``setup.py`` utility. If it's not on your path, you can find it in
``site-packages/django/bin`` within your Python installation. Consider
-symlinking to it from some place on your path, such as ``/usr/local/bin``.
+symlinking it from some place on your path, such as ``/usr/local/bin``.
+
+For Windows users, who do not have symlinking functionality available, you
+can copy ``django-admin.py`` to a location on your existing path or edit the
+``PATH`` settings (under ``Settings - Control Panel - System - Advanced - Environment...``)
+to point to its installed location.
Generally, when working on a single Django project, it's easier to use
``manage.py``. Use ``django-admin.py`` with ``DJANGO_SETTINGS_MODULE``, or the
@@ -92,6 +97,33 @@ example, the default settings don't define ``ROOT_URLCONF``, so
Note that Django's default settings live in ``django/conf/global_settings.py``,
if you're ever curious to see the full list of defaults.
+dumpdata [appname appname ...]
+------------------------------
+
+**New in Django development version**
+
+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).
+
+If no application name is provided, all installed applications will be dumped.
+
+The output of ``dumpdata`` can be used as input for ``loaddata``.
+
+flush
+-----
+
+**New in Django development version**
+
+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.
+
inspectdb
---------
@@ -136,8 +168,92 @@ only works in PostgreSQL and with certain types of MySQL tables.
install [appname appname ...]
-----------------------------
+**Removed in Django development version**
+
Executes the equivalent of ``sqlall`` for the given appnames.
+loaddata [fixture fixture ...]
+------------------------------
+
+**New in Django development version**
+
+Searches for and loads the contents of the named fixture into the database.
+
+A *Fixture* is a collection of files that contain the serialized contents of
+the database. Each fixture has a unique name; however, the files that
+comprise the fixture can be distributed over multiple directories, in
+multiple applications.
+
+Django will search in three locations for fixtures:
+
+ 1. In the ``fixtures`` directory of every installed application
+ 2. In any directory named in the ``FIXTURE_DIRS`` setting
+ 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.
+
+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
+``xml``).
+
+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
+``loaddata`` will be removed from the database.
+
+The fixtures that are named can include directory components. These
+directories will be inluded in the search path. For example::
+
+ django-admin.py loaddata foo/bar/mydata.json
+
+would search ``<appname>/fixtures/foo/bar/mydata.json`` for each installed
+application, ``<dirname>/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,
+all fixture data is installed as a single transaction, so data in
+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.
+
+.. admonition:: MySQL and Fixtures
+
+ 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.
+
+reset [appname appname ...]
+---------------------------
+Executes the equivalent of ``sqlreset`` for the given appnames.
+
+runfcgi [options]
+-----------------
+Starts a set of FastCGI processes suitable for use with any web server
+which supports the FastCGI protocol. See the `FastCGI deployment
+documentation`_ for details. Requires the Python FastCGI module from
+`flup`_.
+
+.. _FastCGI deployment documentation: ../fastcgi/
+.. _flup: http://www.saddi.com/software/flup/
+
runserver [optional port number, or ipaddr:port]
------------------------------------------------
@@ -231,15 +347,12 @@ sqlclear [appname appname ...]
Prints the DROP TABLE SQL statements for the given appnames.
-sqlindexes [appname appname ...]
-----------------------------------------
-
-Prints the CREATE INDEX SQL statements for the given appnames.
+sqlcustom [appname appname ...]
+-------------------------------
-sqlinitialdata [appname appname ...]
---------------------------------------------
+**New in Django development version**
-Prints the initial INSERT SQL statements for the given appnames.
+Prints the custom SQL statements for the given appnames.
For each model in each specified app, this command looks for the file
``<appname>/sql/<modelname>.sql``, where ``<appname>`` is the given appname and
@@ -250,11 +363,23 @@ command.
Each of the SQL files, 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. Use this SQL hook to populate
-tables with any necessary initial records, SQL functions or test data.
+table-creation statements have been executed. Use this SQL hook to make any
+table modifications, or insert any SQL functions into the database.
Note that the order in which the SQL files are processed is undefined.
+sqlindexes [appname appname ...]
+----------------------------------------
+
+Prints the CREATE INDEX SQL statements for the given appnames.
+
+sqlinitialdata [appname appname ...]
+--------------------------------------------
+
+**Removed in Django development version**
+
+This method has been renamed ``sqlcustom`` in the development version of Django.
+
sqlreset [appname appname ...]
--------------------------------------
@@ -294,6 +419,10 @@ 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
+fixture data files.
+
test
----
@@ -343,12 +472,37 @@ setting the Python path for you.
.. _import search path: http://diveintopython.org/getting_to_know_python/everything_is_an_object.html
+--format
+--------
+
+**New in Django development version**
+
+Example usage::
+
+ django-admin.py dumpdata --format=xml
+
+Specifies the output format that will be used. The name provided must be the name
+of a registered serializer.
+
--help
------
Displays a help message that includes a terse list of all available actions and
options.
+--indent
+--------
+
+**New in Django development version**
+
+Example usage::
+
+ django-admin.py dumpdata --indent=4
+
+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.
+
--noinput
---------
diff --git a/docs/email.txt b/docs/email.txt
index 1edce88cef..1f4ce4ef42 100644
--- a/docs/email.txt
+++ b/docs/email.txt
@@ -34,8 +34,8 @@ The simplest way to send e-mail is using the function
``django.core.mail.send_mail()``. Here's its definition::
send_mail(subject, message, from_email, recipient_list,
- fail_silently=False, auth_user=EMAIL_HOST_USER,
- auth_password=EMAIL_HOST_PASSWORD)
+ fail_silently=False, auth_user=None,
+ auth_password=None)
The ``subject``, ``message``, ``from_email`` and ``recipient_list`` parameters
are required.
@@ -65,7 +65,7 @@ send_mass_mail()
Here's the definition::
send_mass_mail(datatuple, fail_silently=False,
- auth_user=EMAIL_HOST_USER, auth_password=EMAIL_HOST_PASSWORD):
+ auth_user=None, auth_password=None):
``datatuple`` is a tuple in which each element is in this format::
diff --git a/docs/fastcgi.txt b/docs/fastcgi.txt
index b61df49190..1efeaf09cf 100644
--- a/docs/fastcgi.txt
+++ b/docs/fastcgi.txt
@@ -274,7 +274,7 @@ In your Web root directory, add this to a file named ``.htaccess`` ::
Then, create a small script that tells Apache how to spawn your FastCGI
program. Create a file ``mysite.fcgi`` and place it in your Web directory, and
-be sure to make it executable ::
+be sure to make it executable::
#!/usr/bin/python
import sys, os
diff --git a/docs/forms.txt b/docs/forms.txt
index 3fa11fea64..8c40eeb997 100644
--- a/docs/forms.txt
+++ b/docs/forms.txt
@@ -173,10 +173,10 @@ creation view that takes validation into account::
# Check for validation errors
errors = manipulator.get_validation_errors(new_data)
+ manipulator.do_html2python(new_data)
if errors:
return render_to_response('places/errors.html', {'errors': errors})
else:
- manipulator.do_html2python(new_data)
new_place = manipulator.save(new_data)
return HttpResponse("Place created: %s" % new_place)
@@ -229,10 +229,10 @@ Below is the finished view::
# Check for errors.
errors = manipulator.get_validation_errors(new_data)
+ manipulator.do_html2python(new_data)
if not errors:
# No errors. This means we can save the data!
- manipulator.do_html2python(new_data)
new_place = manipulator.save(new_data)
# Redirect to the object's "edit" page. Always use a redirect
@@ -324,8 +324,8 @@ about editing an existing one? It's shockingly similar to creating a new one::
if request.method == 'POST':
new_data = request.POST.copy()
errors = manipulator.get_validation_errors(new_data)
+ manipulator.do_html2python(new_data)
if not errors:
- manipulator.do_html2python(new_data)
manipulator.save(new_data)
# Do a post-after-redirect so that reload works, etc.
@@ -406,8 +406,8 @@ Here's a simple function that might drive the above form::
if request.method == 'POST':
new_data = request.POST.copy()
errors = manipulator.get_validation_errors(new_data)
+ manipulator.do_html2python(new_data)
if not errors:
- manipulator.do_html2python(new_data)
# Send e-mail using new_data here...
@@ -608,6 +608,10 @@ fails. If no message is passed in, a default message is used.
order). If the given field does (or does not have, in the latter case) the
given value, then the current field being validated is required.
+ An optional ``other_label`` argument can be passed which, if given, is used
+ in error messages instead of the value. This allows more user friendly error
+ messages if the value itself is not descriptive enough.
+
Note that because validators are called before any ``do_html2python()``
functions, the value being compared against is a string. So
``RequiredIfOtherFieldEquals('choice', '1')`` is correct, whilst
diff --git a/docs/generic_views.txt b/docs/generic_views.txt
index 23f40acb24..a136c72a07 100644
--- a/docs/generic_views.txt
+++ b/docs/generic_views.txt
@@ -686,7 +686,7 @@ A page representing a list of objects.
* ``paginate_by``: An integer specifying how many objects should be
displayed per page. If this is given, the view will paginate objects with
``paginate_by`` objects per page. The view will expect either a ``page``
- query string parameter (via ``GET``) containing a zero-indexed page
+ query string parameter (via ``GET``) containing a 1-based page
number, or a ``page`` variable specified in the URLconf. See
"Notes on pagination" below.
@@ -752,6 +752,12 @@ If the results are paginated, the context will contain these extra variables:
* ``previous``: The previous page number, as an integer. This is 1-based.
+ * `last_on_page`: **New in Django development version** The number of the
+ last result on the current page. This is 1-based.
+
+ * `first_on_page`: **New in Django development version** The number of the
+ first result on the current page. This is 1-based.
+
* ``pages``: The total number of pages, as an integer.
* ``hits``: The total number of objects across *all* pages, not just this
diff --git a/docs/install.txt b/docs/install.txt
index 89a1415f5a..3eede02af0 100644
--- a/docs/install.txt
+++ b/docs/install.txt
@@ -51,16 +51,20 @@ make sure a database server is running. Django works with PostgreSQL_
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 1.1 --
- not version 1.0 or version 2, which is still in beta). If you're on Windows,
- check out the unofficial `compiled Windows version`_.
-* If you're using MySQL, you'll need MySQLdb_.
+* 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 on Windows, check out the unofficial `compiled Windows version`_.
+
+* If you're using MySQL, you'll need MySQLdb_, version 1.2.1p2 or higher.
+
* If you're using SQLite, you'll need pysqlite_. Use version 2.0.3 or higher.
.. _PostgreSQL: http://www.postgresql.org/
.. _MySQL: http://www.mysql.com/
.. _Django's ticket system: http://code.djangoproject.com/report/1
-.. _psycopg: http://initd.org/projects/psycopg1
+.. _psycopg: http://initd.org/tracker/psycopg
.. _compiled Windows version: http://stickpeople.com/projects/python/win-psycopg/
.. _MySQLdb: http://sourceforge.net/projects/mysql-python
.. _SQLite: http://www.sqlite.org/
@@ -77,10 +81,18 @@ It's easy either way.
Installing the official version
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-1. Download Django-0.95.tar.gz from our `download page`_.
-2. ``tar xzvf Django-0.95.tar.gz``
-3. ``cd Django-0.95``
-4. ``sudo python setup.py install``
+ 1. Check the `distribution specific notes`_ to see if your
+ platform/distribution provides official Django packages/installers.
+ Distribution-provided packages will typically allow for automatic
+ installation of dependancies and easy upgrade paths.
+
+ 2. Download Django-0.95.tar.gz from our `download page`_.
+
+ 3. ``tar xzvf Django-0.95.tar.gz``
+
+ 4. ``cd Django-0.95``
+
+ 5. ``sudo python setup.py install``
Note that the last command will automatically download and install setuptools_
if you don't already have it installed. This requires a working Internet
@@ -93,6 +105,7 @@ The command will install Django in your Python installation's ``site-packages``
directory.
.. _setuptools: http://peak.telecommunity.com/DevCenter/setuptools
+.. _distribution specific notes: ../distributions/
Installing the development version
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/docs/model-api.txt b/docs/model-api.txt
index 8abd88f7ec..e66e96de68 100644
--- a/docs/model-api.txt
+++ b/docs/model-api.txt
@@ -498,6 +498,12 @@ or outside your model class altogether::
class Foo(models.Model):
gender = models.CharField(maxlength=1, choices=GENDER_CHOICES)
+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
+
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
yourself hacking ``choices`` to be dynamic, you're probably better off using
@@ -874,8 +880,8 @@ the relationship should work. All are optional:
force Django to add the descriptor for the reverse
relationship, allowing ``ManyToMany`` relationships to be
non-symmetrical.
-
- ``db_table`` The name of the table to create for storing the many-to-many
+
+ ``db_table`` The name of the table to create for storing the many-to-many
data. If this is not provided, Django will assume a default
name based upon the names of the two tables being joined.
@@ -1210,6 +1216,9 @@ screen via ``<script src="">`` tags. This can be used to tweak a given type of
admin page in JavaScript or to provide "quick links" to fill in default values
for certain fields.
+If relative URLs are used, Django admin will automatically prepend these links
+with ``settings.ADMIN_MEDIA_PREFIX``.
+
``list_display``
----------------
@@ -1272,8 +1281,8 @@ A few special cases to note about ``list_display``:
return '<span style="color: #%s;">%s %s</span>' % (self.color_code, self.first_name, self.last_name)
colored_name.allow_tags = True
- * If the string given is a method of the model that returns True or False
- Django will display a pretty "on" or "off" icon if you give the method a
+ * If the string given is a method of the model that returns True or False
+ Django will display a pretty "on" or "off" icon if you give the method a
``boolean`` attribute whose value is ``True``.
Here's a full example model::
@@ -1295,10 +1304,30 @@ A few special cases to note about ``list_display``:
list_display = ('__str__', 'some_other_field')
- * For any element of ``list_display`` that is not a field on the model, the
- change list page will not allow ordering by that column. This is because
- ordering is done at the database level, and Django has no way of knowing
- how to order the result of a custom method at the SQL level.
+ * Usually, elements of ``list_display`` that aren't actual database fields
+ can't be used in sorting (because Django does all the sorting at the
+ database level).
+
+ However, if an element of ``list_display`` represents a certain database
+ field, you can indicate this fact by setting the ``admin_order_field``
+ attribute of the item.
+
+ For example::
+
+ class Person(models.Model):
+ first_name = models.CharField(maxlength=50)
+ color_code = models.CharField(maxlength=6)
+
+ class Admin:
+ list_display = ('first_name', 'colored_first_name')
+
+ def colored_first_name(self):
+ return '<span style="color: #%s;">%s</span>' % (self.color_code, self.first_name)
+ colored_first_name.allow_tags = True
+ colored_first_name.admin_order_field = 'first_name'
+
+ The above will tell Django to order by the ``first_name`` field when
+ trying to sort by ``colored_first_name`` in the admin.
``list_display_links``
----------------------
@@ -1412,7 +1441,7 @@ This should be set to a list of field names that will be searched whenever
somebody submits a search query in that text box.
These fields should be some kind of text field, such as ``CharField`` or
-``TextField``. You can also perform a related lookup on a ``ForeignKey`` with
+``TextField``. You can also perform a related lookup on a ``ForeignKey`` with
the lookup API "follow" notation::
search_fields = ['foreign_key__related_fieldname']
@@ -1721,11 +1750,29 @@ But this template code is good::
<a href="{{ object.get_absolute_url }}">{{ object.name }}</a>
-(Yes, we know ``get_absolute_url()`` couples URLs to models, which violates the
-DRY principle, because URLs are defined both in a URLconf and in the model.
-This is a rare case in which we've intentionally violated that principle for
-the sake of convenience. With that said, we're working on an even cleaner way
-of specifying URLs in a more DRY fashion.)
+The ``permalink`` decorator
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+**New in Django development version.**
+
+The problem with the way we wrote ``get_absolute_url()`` above is that it
+slightly violates the DRY principle: the URL for this object is defined both
+in the URLConf file and in the model.
+
+You can further decouple your models from the URLconf using the ``permalink``
+decorator. This decorator is passed the view function and any parameters you
+would use for accessing this instance directly. Django then works out the
+correct full URL path using the URLconf. For example::
+
+ from django.db.models import permalink
+
+ def get_absolute_url(self):
+ return ('people.views.details', str(self.id))
+ get_absolute_url = permalink(get_absolute_url)
+
+In this way, you're tying the model's absolute URL to the view that is used
+to display it, without repeating the URL information anywhere. You can still
+use the ``get_absolute_url`` method in templates, as before.
Executing custom SQL
--------------------
diff --git a/docs/newforms.txt b/docs/newforms.txt
index 063f686ed5..33aaf14357 100644
--- a/docs/newforms.txt
+++ b/docs/newforms.txt
@@ -51,9 +51,10 @@ too messy. The choice is yours.
Overview
========
-As with the ``django.forms`` ("manipulators") system before it, ``django.newforms``
-is intended to handle HTML form display, validation and redisplay. It's what
-you use if you want to perform server-side validation for an HTML form.
+As with the ``django.forms`` ("manipulators") system before it,
+``django.newforms`` is intended to handle HTML form display, data processing
+(validation) and redisplay. It's what you use if you want to perform
+server-side validation for an HTML form.
For example, if your Web site has a contact form that visitors can use to
send you e-mail, you'd use this library to implement the display of the HTML
@@ -571,6 +572,46 @@ is a list-like object that is displayed as an HTML ``<ul>`` when printed::
>>> str(f['subject'].errors)
''
+Subclassing forms
+-----------------
+
+If you subclass a custom ``Form`` class, the resulting ``Form`` class will
+include all fields of the parent class(es), followed by the fields you define
+in the subclass.
+
+In this example, ``ContactFormWithPriority`` contains all the fields from
+``ContactForm``, plus an additional field, ``priority``. The ``ContactForm``
+fields are ordered first::
+
+ >>> class ContactFormWithPriority(ContactForm):
+ ... priority = forms.CharField()
+ >>> f = ContactFormWithPriority(auto_id=False)
+ >>> print f.as_ul()
+ <li>Subject: <input type="text" name="subject" maxlength="100" /></li>
+ <li>Message: <input type="text" name="message" /></li>
+ <li>Sender: <input type="text" name="sender" /></li>
+ <li>Cc myself: <input type="checkbox" name="cc_myself" /></li>
+ <li>Priority: <input type="text" name="priority" /></li>
+
+It's possible to subclass multiple forms, treating forms as "mix-ins." In this
+example, ``BeatleForm`` subclasses both ``PersonForm`` and ``InstrumentForm``
+(in that order), and its field list includes the fields from the parent
+classes::
+
+ >>> class PersonForm(Form):
+ ... first_name = CharField()
+ ... last_name = CharField()
+ >>> class InstrumentForm(Form):
+ ... instrument = CharField()
+ >>> class BeatleForm(PersonForm, InstrumentForm):
+ ... haircut_type = CharField()
+ >>> b = BeatleForm(auto_id=False)
+ >>> print b.as_ul()
+ <li>First name: <input type="text" name="first_name" /></li>
+ <li>Last name: <input type="text" name="last_name" /></li>
+ <li>Instrument: <input type="text" name="instrument" /></li>
+ <li>Haircut type: <input type="text" name="haircut_type" /></li>
+
Fields
======
diff --git a/docs/outputting_pdf.txt b/docs/outputting_pdf.txt
index 464bf7fcb8..bd6ae7a660 100644
--- a/docs/outputting_pdf.txt
+++ b/docs/outputting_pdf.txt
@@ -29,7 +29,7 @@ Test your installation by importing it in the Python interactive interpreter::
If that command doesn't raise any errors, the installation worked.
-.. _user guide: http://www.reportlab.org/rsrc/userguide.pdf
+.. _user guide: http://www.reportlab.com/docs/userguide.pdf
Write your view
===============
diff --git a/docs/request_response.txt b/docs/request_response.txt
index afea0bcd53..6dfe78a686 100644
--- a/docs/request_response.txt
+++ b/docs/request_response.txt
@@ -432,3 +432,118 @@ types of HTTP responses. Like ``HttpResponse``, these subclasses live in
``HttpResponseServerError``
Acts just like ``HttpResponse`` but uses a 500 status code.
+
+Returning errors
+================
+
+Returning HTTP error codes in Django is easy. We've already mentioned the
+``HttpResponseNotFound``, ``HttpResponseForbidden``,
+``HttpResponseServerError``, etc., subclasses; just return an instance of one
+of those subclasses instead of a normal ``HttpResponse`` in order to signify
+an error. For example::
+
+ def my_view(request):
+ # ...
+ if foo:
+ return HttpResponseNotFound('<h1>Page not found</h1>')
+ else:
+ return HttpResponse('<h1>Page was found</h1>')
+
+Because 404 errors are by far the most common HTTP error, there's an easier way
+to handle those errors.
+
+The Http404 exception
+---------------------
+
+When you return an error such as ``HttpResponseNotFound``, you're responsible
+for defining the HTML of the resulting error page::
+
+ return HttpResponseNotFound('<h1>Page not found</h1>')
+
+For convenience, and because it's a good idea to have a consistent 404 error page
+across your site, Django provides an ``Http404`` exception. If you raise
+``Http404`` at any point in a view function, Django will catch it and return the
+standard error page for your application, along with an HTTP error code 404.
+
+Example usage::
+
+ from django.http import Http404
+
+ def detail(request, poll_id):
+ try:
+ p = Poll.objects.get(pk=poll_id)
+ except Poll.DoesNotExist:
+ raise Http404
+ return render_to_response('polls/detail.html', {'poll': p})
+
+In order to use the ``Http404`` exception to its fullest, you should create a
+template that is displayed when a 404 error is raised. This template should be
+called ``404.html`` and located in the top level of your template tree.
+
+Customing error views
+---------------------
+
+The 404 (page not found) view
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+When you raise an ``Http404`` exception, Django loads a special view devoted
+to handling 404 errors. By default, it's the view
+``django.views.defaults.page_not_found``, which loads and renders the template
+``404.html``.
+
+This means you need to define a ``404.html`` template in your root template
+directory. This template will be used for all 404 errors.
+
+This ``page_not_found`` view should suffice for 99% of Web applications, but if
+you want to override the 404 view, you can specify ``handler404`` in your
+URLconf, like so::
+
+ handler404 = 'mysite.views.my_custom_404_view'
+
+Behind the scenes, Django determines the 404 view by looking for ``handler404``.
+By default, URLconfs contain the following line::
+
+ from django.conf.urls.defaults import *
+
+That takes care of setting ``handler404`` in the current module. As you can see
+in ``django/conf/urls/defaults.py``, ``handler404`` is set to
+``'django.views.defaults.page_not_found'`` by default.
+
+Three things to note about 404 views:
+
+ * The 404 view is also called if Django doesn't find a match after checking
+ every regular expression in the URLconf.
+
+ * If you don't define your own 404 view -- and simply use the default,
+ which is recommended -- you still have one obligation: To create a
+ ``404.html`` template in the root of your template directory. The default
+ 404 view will use that template for all 404 errors.
+
+ * If ``DEBUG`` is set to ``True`` (in your settings module) then your 404
+ view will never be used, and the traceback will be displayed instead.
+
+The 500 (server error) view
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Similarly, Django executes special-case behavior in the case of runtime errors
+in view code. If a view results in an exception, Django will, by default, call
+the view ``django.views.defaults.server_error``, which loads and renders the
+template ``500.html``.
+
+This means you need to define a ``500.html`` template in your root template
+directory. This template will be used for all server errors.
+
+This ``server_error`` view should suffice for 99% of Web applications, but if
+you want to override the view, you can specify ``handler500`` in your
+URLconf, like so::
+
+ handler500 = 'mysite.views.my_custom_error_view'
+
+Behind the scenes, Django determines the error view by looking for ``handler500``.
+By default, URLconfs contain the following line::
+
+ from django.conf.urls.defaults import *
+
+That takes care of setting ``handler500`` in the current module. As you can see
+in ``django/conf/urls/defaults.py``, ``handler500`` is set to
+``'django.views.defaults.server_error'`` by default.
diff --git a/docs/settings.txt b/docs/settings.txt
index cdf440ed6b..b41281ee49 100644
--- a/docs/settings.txt
+++ b/docs/settings.txt
@@ -162,10 +162,13 @@ a model object and return its URL. This is a way of overriding
``get_absolute_url()`` methods on a per-installation basis. Example::
ABSOLUTE_URL_OVERRIDES = {
- 'blogs.Weblog': lambda o: "/blogs/%s/" % o.slug,
- 'news.Story': lambda o: "/stories/%s/%s/" % (o.pub_year, o.slug),
+ 'blogs.weblog': lambda o: "/blogs/%s/" % o.slug,
+ 'news.story': lambda o: "/stories/%s/%s/" % (o.pub_year, o.slug),
}
+Note that the model name used in this setting should be all lower-case, regardless
+of the case of the actual model class name.
+
ADMIN_FOR
---------
@@ -197,6 +200,9 @@ of (Full name, e-mail address). Example::
(('John', 'john@example.com'), ('Mary', 'mary@example.com'))
+Note that Django will e-mail *all* of these people whenever an error happens. See the
+section on `error reporting via e-mail`_ for more information.
+
ALLOWED_INCLUDE_ROOTS
---------------------
@@ -236,10 +242,10 @@ The cache key prefix that the cache middleware should use. See the
DATABASE_ENGINE
---------------
-Default: ``'postgresql'``
+Default: ``''`` (Empty string)
-Which database backend to use. Either ``'postgresql'``, ``'mysql'``,
-``'sqlite3'`` or ``'ado_mssql'``.
+Which database backend to use. Either ``'postgresql_psycopg2'``,
+``'postgresql'``, ``'mysql'``, ``'sqlite3'`` or ``'ado_mssql'``.
DATABASE_HOST
-------------
@@ -328,6 +334,16 @@ Default: ``False``
A boolean that turns on/off debug mode.
+If you define custom settings, django/views/debug.py has a ``HIDDEN_SETTINGS``
+regular expression which will hide from the DEBUG view anything that contins
+``'SECRET``, ``PASSWORD``, or ``PROFANITIES'``. This allows untrusted users to
+be able to give backtraces without seeing sensitive (or offensive) settings.
+
+Still, note that there are always going to be sections of your debug output that
+are inapporpriate for public consumption. File paths, configuration options, and
+the like all give attackers extra information about your server. Never deploy a
+site with ``DEBUG`` turned on.
+
DEFAULT_CHARSET
---------------
@@ -409,12 +425,25 @@ 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.
+FIXTURE_DIRS
+-------------
+
+**New in Django development version**
+
+Default: ``()`` (Empty tuple)
+
+List of locations of the fixture data files, in search order. Note that
+these paths should use Unix-style forward slashes, even on Windows. See
+`Testing Django Applications`_.
+
+.. _Testing Django Applications: ../testing/
+
IGNORABLE_404_ENDS
------------------
Default: ``('mail.pl', 'mailform.pl', 'mail.cgi', 'mailform.cgi', 'favicon.ico', '.php')``
-See also ``IGNORABLE_404_STARTS``.
+See also ``IGNORABLE_404_STARTS`` and ``Error reporting via e-mail``.
IGNORABLE_404_STARTS
--------------------
@@ -422,7 +451,8 @@ IGNORABLE_404_STARTS
Default: ``('/cgi-bin/', '/_vti_bin', '/_vti_inf')``
A tuple of strings that specify beginnings of URLs that should be ignored by
-the 404 e-mailer. See ``SEND_BROKEN_LINK_EMAILS`` and ``IGNORABLE_404_ENDS``.
+the 404 e-mailer. See ``SEND_BROKEN_LINK_EMAILS``, ``IGNORABLE_404_ENDS`` and
+the section on `error reporting via e-mail`_.
INSTALLED_APPS
--------------
@@ -636,8 +666,19 @@ Default: ``False``
Whether to send an e-mail to the ``MANAGERS`` each time somebody visits a
Django-powered page that is 404ed with a non-empty referer (i.e., a broken
link). This is only used if ``CommonMiddleware`` is installed (see the
-`middleware docs`_). See also ``IGNORABLE_404_STARTS`` and
-``IGNORABLE_404_ENDS``.
+`middleware docs`_). See also ``IGNORABLE_404_STARTS``,
+``IGNORABLE_404_ENDS`` and the section on `error reporting via e-mail`_
+
+SERIALIZATION_MODULES
+---------------------
+
+Default: Not defined.
+
+A dictionary of modules containing serializer definitions (provided as
+strings), keyed by a string identifier for that serialization type. For
+example, to define a YAML serializer, use::
+
+ SERIALIZATION_MODULES = { 'yaml' : 'path.to.yaml_serializer' }
SERVER_EMAIL
------------
@@ -827,6 +868,11 @@ manual configuration option (see below), Django will *not* touch the ``TZ``
environment variable, and it'll be up to you to ensure your processes are
running in the correct environment.
+.. note::
+ Django cannot reliably use alternate time zones in a Windows environment.
+ If you're running Django on Windows, this variable must be set to match the
+ system timezone.
+
URL_VALIDATOR_USER_AGENT
------------------------
@@ -972,3 +1018,36 @@ 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.
+
+Error reporting via e-mail
+==========================
+
+Server errors
+-------------
+
+When ``DEBUG`` is ``False``, Django will e-mail the users listed in the
+``ADMIN`` setting whenever your code raises an unhandled exception and results
+in an internal server error (HTTP status code 500). This gives the
+administrators immediate notification of any errors.
+
+To disable this behavior, just remove all entries from the ``ADMINS`` setting.
+
+404 errors
+----------
+
+When ``DEBUG`` is ``False`` and your ``MIDDLEWARE_CLASSES`` setting includes
+``CommonMiddleware``, Django will e-mail the users listed in the ``MANAGERS``
+setting whenever your code raises a 404 and the request has a referer.
+(It doesn't bother to e-mail for 404s that don't have a referer.)
+
+You can tell Django to stop reporting particular 404s by tweaking the
+``IGNORABLE_404_ENDS`` and ``IGNORABLE_404_STARTS`` settings. Both should be a
+tuple of strings. For example::
+
+ IGNORABLE_404_ENDS = ('.php', '.cgi')
+ IGNORABLE_404_STARTS = ('/phpmyadmin/')
+
+In this example, a 404 to any URL ending with ``.php`` or ``.cgi`` will *not*
+be reported. Neither will any URL starting with ``/phpmyadmin/``.
+
+To disable this behavior, just remove all entries from the ``MANAGERS`` setting.
diff --git a/docs/syndication_feeds.txt b/docs/syndication_feeds.txt
index 72b05ff16a..a64914de3f 100644
--- a/docs/syndication_feeds.txt
+++ b/docs/syndication_feeds.txt
@@ -127,7 +127,7 @@ put into those elements.
it two template context variables:
* ``{{ obj }}`` -- The current object (one of whichever objects you
- returned in ``items()``).
+ returned in ``items()``).
* ``{{ site }}`` -- A ``django.models.core.sites.Site`` object
representing the current site. This is useful for
``{{ site.domain }}`` or ``{{ site.name }}``.
@@ -478,6 +478,22 @@ This example illustrates all possible attributes and methods for a ``Feed`` clas
categories = ("python", "django") # Hard-coded list of categories.
+ # COPYRIGHT NOTICE -- One of the following three is optional. The
+ # framework looks for them in this order.
+
+ def copyright(self, obj):
+ """
+ Takes the object returned by get_object() and returns the feed's
+ copyright notice as a normal Python string.
+ """
+
+ def copyright(self):
+ """
+ Returns the feed's copyright notice as a normal Python string.
+ """
+
+ copyright = 'Copyright (c) 2007, Sally Smith' # Hard-coded copyright notice.
+
# ITEMS -- One of the following three is required. The framework looks
# for them in this order.
@@ -659,6 +675,23 @@ This example illustrates all possible attributes and methods for a ``Feed`` clas
item_categories = ("python", "django") # Hard-coded categories.
+ # ITEM COPYRIGHT NOTICE (only applicable to Atom feeds) -- One of the
+ # following three is optional. The framework looks for them in this
+ # order.
+
+ def item_copyright(self, obj):
+ """
+ Takes an item, as returned by items(), and returns the item's
+ copyright notice as a normal Python string.
+ """
+
+ def item_copyright(self):
+ """
+ Returns the copyright notice for every item in the feed.
+ """
+
+ item_copyright = 'Copyright (c) 2007, Sally Smith' # Hard-coded copyright notice.
+
The low-level framework
=======================
diff --git a/docs/templates.txt b/docs/templates.txt
index 9f8fe446b4..d53270ac16 100644
--- a/docs/templates.txt
+++ b/docs/templates.txt
@@ -253,6 +253,16 @@ Here are some tips for working with inheritance:
if you want to add to the contents of a parent block instead of
completely overriding it.
+ * **New in Django development version:** For extra readability, you can
+ optionally give a *name* to your ``{% endblock %}`` tag. For example::
+
+ {% block content %}
+ ...
+ {% endblock content %}
+
+ In larger templates, this technique helps you see which ``{% block %}``
+ tags are being closed.
+
Finally, note that you can't define multiple ``{% block %}`` tags with the same
name in the same template. This limitation exists because a block tag works in
"both" directions. That is, a block tag doesn't just provide a hole to fill --
@@ -635,6 +645,7 @@ Available format strings:
output, because this includes periods
to match Associated Press style.)
A ``'AM'`` or ``'PM'``. ``'AM'``
+ b Month, textual, 3 letters, lowercase. ``'jan'``
B Not implemented.
d Day of the month, 2 digits with ``'01'`` to ``'31'``
leading zeros.
@@ -819,6 +830,40 @@ The argument tells which template bit to output:
Note: ``opencomment`` and ``closecomment`` are new in the Django development version.
+url
+~~~
+
+**New in Django development version**
+
+**Note that the syntax for this tag may change in the future, as we make it more robust.**
+
+Returns an absolute URL (i.e., a URL without the domain name) matching a given
+view function and optional parameters. This is a way to output links without
+violating the DRY principle by having to hard-code URLs in your templates::
+
+ {% url path.to.some_view arg1,arg2,name1=value1 %}
+
+The first argument is a path to a view function in the format
+``package.package.module.function``. Additional arguments are optional and
+should be comma-separated values that will be used as positional and keyword
+arguments in the URL. All arguments required by the URLconf should be present.
+
+For example, suppose you have a view, ``app_name.client``, whose URLconf takes
+a client ID. The URLconf line might look like this::
+
+ ('^client/(\d+)/$', 'app_name.client')
+
+If this app's URLconf is included into the project's URLconf under a path
+such as this::
+
+ ('^clients/', include('project_name.app_name.urls'))
+
+...then, in a template, you can create a link to this view like this::
+
+ {% url app_name.client client.id %}
+
+The template tag will output the string ``/clients/client/123/``.
+
widthratio
~~~~~~~~~~
@@ -1133,6 +1178,16 @@ Truncates a string after a certain number of words.
**Argument:** Number of words to truncate after
+truncatewords_html
+~~~~~~~~~~~~~~~~~~
+
+Similar to ``truncatewords``, except that it is aware of HTML tags. Any tags
+that are opened in the string and not closed before the truncation point, are
+closed immediately after the truncation.
+
+This is less efficient than ``truncatewords``, so should only be used when it
+is being passed HTML text.
+
unordered_list
~~~~~~~~~~~~~~
diff --git a/docs/templates_python.txt b/docs/templates_python.txt
index 5f9c5bde43..5dd8e4fde0 100644
--- a/docs/templates_python.txt
+++ b/docs/templates_python.txt
@@ -654,6 +654,18 @@ decorator instead::
If you leave off the ``name`` argument, as in the second example above, Django
will use the function's name as the filter name.
+Template filters which expect strings
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If you are writing a template filter which only expects a string as the first
+argument, you should use the included decorator ``stringfilter`` which will convert
+an object to it's string value before being passed to your function::
+
+ from django import template
+
+ @template.stringfilter
+ def lower(value):
+ return value.lower()
+
Writing custom template tags
----------------------------
@@ -801,6 +813,70 @@ Python 2.4 and above::
If you leave off the ``name`` argument, as in the second example above, Django
will use the function's name as the tag name.
+Passing template variables to the tag
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Although you can pass any number of arguments to a template tag using
+``token.split_contents()``, the arguments are all unpacked as
+string literals. A little more work is required in order to dynamic content (a
+template variable) to a template tag as an argument.
+
+While the previous examples have formatted the current time into a string and
+returned the string, suppose you wanted to pass in a ``DateTimeField`` from an
+object and have the template tag format that date-time::
+
+ <p>This post was last updated at {% format_time blog_entry.date_updated "%Y-%m-%d %I:%M %p" %}.</p>
+
+Initially, ``token.split_contents()`` will return three values:
+
+ 1. The tag name ``format_time``.
+ 2. The string "blog_entry.date_updated" (without the surrounding quotes).
+ 3. The formatting string "%Y-%m-%d %I:%M %p". The return value from
+ ``split_contents()`` will include the leading and trailing quotes for
+ string literals like this.
+
+Now your tag should begin to look like this::
+
+ from django import template
+ def do_format_time(parser, token):
+ try:
+ # 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]
+ 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])
+
+You also have to change the renderer to retrieve the actual contents of the
+``date_updated`` property of the ``blog_entry`` object. This can be
+accomplished by using the ``resolve_variable()`` function in
+``django.template``. You pass ``resolve_variable()`` the variable name and the
+current context, available in the ``render`` method::
+
+ from django import template
+ from django.template import resolve_variable
+ import datetime
+ class FormatTimeNode(template.Node):
+ def __init__(self, date_to_be_formatted, format_string):
+ self.date_to_be_formatted = date_to_be_formatted
+ self.format_string = format_string
+
+ def render(self, context):
+ try:
+ actual_date = resolve_variable(self.date_to_be_formatted, context)
+ return actual_date.strftime(self.format_string)
+ except VariableDoesNotExist:
+ return ''
+
+``resolve_variable`` will try to resolve ``blog_entry.date_updated`` and then
+format it accordingly.
+
+.. note::
+ The ``resolve_variable()`` function will throw a ``VariableDoesNotExist``
+ exception if it cannot resolve the string passed to it in the current
+ context of the page.
+
Shortcut for simple tags
~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/docs/testing.txt b/docs/testing.txt
index e7c1a3b161..f7fd402502 100644
--- a/docs/testing.txt
+++ b/docs/testing.txt
@@ -92,7 +92,7 @@ Writing unittests
Like doctests, Django's unit tests use a standard library module: unittest_.
As with doctests, Django's test runner looks for any unit test cases defined
-in ``models.py``, or in a ``tests.py`` file stored in the application
+in ``models.py``, or in a ``tests.py`` file stored in the application
directory.
An equivalent unittest test case for the above example would look like::
@@ -111,8 +111,8 @@ An equivalent unittest test case for the above example would look like::
self.assertEquals(self.cat.speak(), 'The cat says "meow"')
When you `run your tests`_, the test utility will find all the test cases
-(that is, subclasses of ``unittest.TestCase``) in ``models.py`` and
-``tests.py``, automatically build a test suite out of those test cases,
+(that is, subclasses of ``unittest.TestCase``) in ``models.py`` and
+``tests.py``, automatically build a test suite out of those test cases,
and run that suite.
For more details about ``unittest``, see the `standard library unittest
@@ -164,12 +164,12 @@ in different circumstances.
Testing Tools
=============
-To assist in testing various features of your application, Django provides
+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_
-
+
Test Client
-----------
@@ -178,36 +178,30 @@ GET and POST requests on a URL, and observe the response that is received.
This allows you to test that the correct view is executed for a given URL,
and that the view constructs the correct response.
-As the response is generated, the Test Client gathers details on the
+As the response is generated, the Test Client gathers details on the
Template and Context objects that were used to generate the response. These
Templates and Contexts are then provided as part of the response, and can be
used as test conditions.
.. admonition:: Test Client vs Browser Automation?
- The Test Client is not intended as a replacement for Twill_, Selenium_,
- or other browser automation frameworks - it is intended to allow
- testing of the contexts and templates produced by a view,
+ The Test Client is not intended as a replacement for Twill_, Selenium_,
+ or other browser automation frameworks - it is intended to allow
+ testing of the contexts and templates produced by a view,
rather than the HTML rendered to the end-user.
-
+
A comprehensive test suite should use a combination of both: Test Client
- tests to establish that the correct view is being called and that
+ tests to establish that the correct view is being called and that
the view is collecting the correct context data, and Browser Automation
tests to check that user interface behaves as expected.
-
+
.. _Twill: http://twill.idyll.org/
.. _Selenium: http://www.openqa.org/selenium/
-The Test Client is stateful; if a cookie is returned as part of a response,
-that cookie is provided as part of the next request issued to that Client
-instance. Expiry policies for these cookies are not followed; if you want
-a cookie to expire, either delete it manually from ``client.cookies``, or
-create a new Client instance (which will effectively delete all cookies).
-
Making requests
~~~~~~~~~~~~~~~
-Creating an instance of ``Client`` (``django.test.client.Client``) requires
+Creating an instance of ``Client`` (``django.test.client.Client``) requires
no arguments at time of construction. Once constructed, the following methods
can be invoked on the ``Client`` instance.
@@ -222,23 +216,29 @@ can be invoked on the ``Client`` instance.
http://yoursite.com/customers/details/?name=fred&age=7
-``post(path, data={})``
- Make a POST request on the provided ``path``. The key-value pairs in the
- data dictionary will be used to create the POST data payload. This payload
- will be transmitted with the mimetype ``multipart/form-data``.
-
- However 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.,
- ``field`` and ``field_file``) required by FileField. For example::
+``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
+ ``Content-Type`` header.
+
+ 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.
+
+ 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.,
+ ``field`` and ``field_file``) required by Django's FileField. For example::
c = Client()
f = open('wishlist.doc')
c.post('/customers/wishes/', {'name':'fred', 'attachment':f})
f.close()
- will result in the evaluation of a POST request on ``/customers/wishes/``,
- with a POST dictionary that contains `name`, `attachment` (containing the
+ will result in the evaluation of a POST request on ``/customers/wishes/``,
+ with a POST dictionary that contains `name`, `attachment` (containing the
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.
@@ -250,65 +250,104 @@ can be invoked on the ``Client`` instance.
call to ``login()`` stimulates the series of GET and POST calls required
to log a user into a @login_required protected view.
- If login is possible, the final return value of ``login()`` is the response
+ 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.
- Note that since the test suite will be executed using the test database,
+ 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.
+ 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.
Testing Responses
~~~~~~~~~~~~~~~~~
-The ``get()``, ``post()`` and ``login()`` methods all return a Response
-object. This Response object has the following properties that can be used
+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:
=============== ==========================================================
Property Description
=============== ==========================================================
- ``status_code`` The HTTP status of the response. See RFC2616_ for a
+ ``status_code`` The HTTP status of the response. See RFC2616_ for a
full list of HTTP status codes.
- ``content`` The body of the response. The is the final page
- content as rendered by the view, or any error message
+ ``content`` The body of the response. The is the final page
+ content as rendered by the view, or any error message
(such as the URL for a 302 redirect).
- ``template`` The Template instance that was used to render the final
- content. Testing ``template.name`` can be particularly
- useful; if the template was loaded from a file,
- ``template.name`` will be the file name that was loaded.
+ ``template`` The Template instance that was used to render the final
+ content. Testing ``template.name`` can be particularly
+ useful; if the template was loaded from a file,
+ ``template.name`` will be the file name that was loaded.
- If multiple templates were rendered, (e.g., if one
- template includes another template),``template`` will
- be a list of Template objects, in the order in which
+ If multiple templates were rendered, (e.g., if one
+ template includes another template),``template`` will
+ be a list of Template objects, in the order in which
they were rendered.
- ``context`` The Context that was used to render the template that
+ ``context`` The Context that was used to render the template that
produced the response content.
- As with ``template``, if multiple templates were rendered
- ``context`` will be a list of Context objects, stored in
- the order in which they were rendered.
+ As with ``template``, if multiple templates were rendered
+ ``context`` will be a list of Context objects, stored in
+ the order in which they were rendered.
=============== ==========================================================
.. _RFC2616: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
+Exceptions
+~~~~~~~~~~
+
+If you point the Test Client at a view that raises an exception, that exception
+will be visible in the test case. You can then use a standard ``try...catch``
+block, or ``unittest.TestCase.assertRaises()`` to test for exceptions.
+
+The only exceptions that are not visible in a Test Case are ``Http404``,
+``PermissionDenied`` and ``SystemExit``. Django catches these exceptions
+internally and converts them into the appropriate HTTP responses codes.
+
+Persistent state
+~~~~~~~~~~~~~~~~
+
+The Test Client is stateful; if a cookie is returned as part of a response,
+that cookie is provided as part of the next request issued by that Client
+instance. Expiry policies for these cookies are not followed; if you want
+a cookie to expire, either delete it manually or create a new Client
+instance (which will effectively delete all cookies).
+
+There are two properties of the Test Client which are used to store persistent
+state information. If necessary, these properties can be interrogated as
+part of a test condition.
+
+ =============== ==========================================================
+ Property Description
+ =============== ==========================================================
+ ``cookies`` A Python ``SimpleCookie`` object, containing the current
+ values of all the client cookies.
+
+ ``session`` A dictionary-like object containing session information.
+ See the `session documentation`_ for full details.
+ =============== ==========================================================
+
+.. _`session documentation`: ../sessions/
+
+Example
+~~~~~~~
+
The following is a simple unit test using the Test Client::
-
+
import unittest
from django.test.client import Client
-
+
class SimpleTest(unittest.TestCase):
def setUp(self):
# Every test needs a client
self.client = Client()
- def test_details(self):
+ def test_details(self):
# Issue a GET request
response = self.client.get('/customer/details/')
-
+
# Check that the respose is 200 OK
self.failUnlessEqual(response.status_code, 200)
# Check that the rendered context contains 5 customers
@@ -317,7 +356,55 @@ The following is a simple unit test using the Test Client::
Fixtures
--------
-Feature still to come...
+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.
+
+A *Fixture* is a collection of files that contain the serialized contents of
+the database. Each fixture has a unique name; however, the files that
+comprise the fixture can be distributed over multiple directories, in
+multiple applications.
+
+.. note::
+ 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``.
+
+
+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.
+
+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
+look like::
+
+ from django.test import TestCase
+ from myapp.models import Animal
+
+ 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.
+In this example, any JSON fixture called ``mammals``, and any fixture
+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
+
+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.
Running tests
=============
@@ -335,13 +422,13 @@ but you only want to run the animals unit tests, run::
When you run your tests, you'll see a bunch of text flow by as the test
database is created and models are initialized. This test database is
-created from scratch every time you run your tests.
+created from scratch every time you run your tests.
-By default, the test database gets its name by prepending ``test_`` to
-the database name specified by the ``DATABASE_NAME`` setting; all other
+By default, the test database gets its name by prepending ``test_`` to
+the database name specified by the ``DATABASE_NAME`` setting; all other
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.
+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.
Once the test database has been established, Django will run your tests.
If everything goes well, at the end you'll see::
@@ -377,7 +464,10 @@ failed::
FAILED (failures=1)
-When the tests have all been executed, the test database is destroyed.
+The return code for the script will indicate the number of tests that failed.
+
+Regardless of whether the tests pass or fail, the test database is destroyed when
+all the tests have been executed.
Using a different testing framework
===================================
@@ -388,7 +478,8 @@ 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 ``django.test.simple.run_tests``. This method defines the default Django
+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:
#. Performing global pre-test setup
@@ -396,7 +487,7 @@ testing behavior. This behavior involves:
#. Running ``syncdb`` to install models and initial data into the test database
#. Looking for Unit Tests and Doctests in ``models.py`` and ``tests.py`` file for each installed application
#. Running the Unit Tests and Doctests that are found
-#. Destroying the test database.
+#. Destroying the test database
#. Performing global post-test teardown
If you define your own test runner method and point ``TEST_RUNNER``
@@ -414,9 +505,11 @@ arguments:
The module list is the list of Python modules that contain the models to be
tested. This is the same format returned by ``django.db.models.get_apps()``
- Verbosity determines the amount of notification and debug information that
+ 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
-----------------
@@ -425,12 +518,12 @@ To assist in the creation of your own test runner, Django provides
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.
+ Performs any global pre-test setup, such as the installing the
+ instrumentation of the template rendering system.
``teardown_test_environment()``
- Performs any global post-test teardown, such as removing the instrumentation
- of the template rendering system.
+ Performs any global post-test teardown, such as removing the instrumentation
+ of the template rendering system.
``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 1b241f728a..56c5fa769e 100644
--- a/docs/tutorial01.txt
+++ b/docs/tutorial01.txt
@@ -19,6 +19,15 @@ installed.
.. _`Django installed`: ../install/
+.. admonition:: Where to get help:
+
+ If you're having trouble going through this tutorial, please post a message
+ to `django-users`_ or drop by `#django`_ on ``irc.freenode.net`` and we'll
+ try to help.
+
+.. _django-users: http://groups.google.com/group/django-users
+.. _#django: irc://irc.freenode.net/django
+
Creating a project
==================
@@ -32,6 +41,13 @@ From the command line, ``cd`` into a directory where you'd like to store your
code, then run the command ``django-admin.py startproject mysite``. This
will create a ``mysite`` directory in your current directory.
+.. note::
+
+ You'll need to avoid naming projects after built-in Python or Django
+ components. In particular, this means you should avoid using names like
+ ``django`` (which will conflict with Django itself) or ``site`` (which
+ conflicts with a built-in Python package).
+
(``django-admin.py`` should be on your system path if you installed Django via
``python setup.py``. If it's not on your path, you can find it in
``site-packages/django/bin``, where ``site-packages`` is a directory within
diff --git a/docs/tutorial04.txt b/docs/tutorial04.txt
index 7b19bdaeaf..b1c8c7d4fc 100644
--- a/docs/tutorial04.txt
+++ b/docs/tutorial04.txt
@@ -206,6 +206,21 @@ for the polls app, we manually specify a template name for the results view:
``template_name='polls/results.html'``. Otherwise, both views would use the same
template. Note that we use ``dict()`` to return an altered dictionary in place.
+.. note:: ``all()`` is lazy
+
+ It might look a little frightening to see ``Poll.objects.all()`` being used
+ in a detail view which only needs one ``Poll`` object, but don't worry;
+ ``Poll.objects.all()`` is actually a special object called a ``QuerySet``,
+ which is "lazy" and doesn't hit your database until it absolutely has to. By
+ the time the database query happens, the ``object_detail`` generic view will
+ have narrowed its scope down to a single object, so the eventual query will
+ only select one row from the database.
+
+ 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
+
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,
the generic views provide the variables ``object`` and ``object_list`` as context.
diff --git a/docs/url_dispatch.txt b/docs/url_dispatch.txt
index da4be2c746..3f51ce4b91 100644
--- a/docs/url_dispatch.txt
+++ b/docs/url_dispatch.txt
@@ -390,6 +390,13 @@ to pass metadata and options to views.
.. _generic views: ../generic_views/
.. _syndication framework: ../syndication/
+.. admonition:: Dealing with conflicts
+
+ It's possible to have a URL pattern which captures named keyword arguments,
+ and also passes arguments with the same names in its dictionary of extra
+ arguments. When this happens, the arguments in the dictionary will be used
+ instead of the arguments captured in the URL.
+
Passing extra options to ``include()``
--------------------------------------
diff --git a/extras/django_bash_completion b/extras/django_bash_completion
index 829756c371..64d8961ca7 100644
--- a/extras/django_bash_completion
+++ b/extras/django_bash_completion
@@ -31,6 +31,9 @@
#
# To uninstall, just remove the line from your .bash_profile and .bashrc.
+# Enable extended pattern matching operators.
+shopt -s extglob
+
_django_completion()
{
local cur prev opts actions action_shell_opts action_runfcgi_opts
@@ -58,8 +61,13 @@ _django_completion()
||
# python manage.py, /some/path/python manage.py (if manage.py exists)
( ${COMP_CWORD} -eq 2 &&
- ( $( basename ${COMP_WORDS[0]} ) == python ) &&
+ ( $( basename ${COMP_WORDS[0]} ) == python?([1-9]\.[0-9]) ) &&
( $( basename ${COMP_WORDS[1]} ) == manage.py) &&
+ ( -r ${COMP_WORDS[1]} ) )
+ ||
+ ( ${COMP_CWORD} -eq 2 &&
+ ( $( basename ${COMP_WORDS[0]} ) == python?([1-9]\.[0-9]) ) &&
+ ( $( basename ${COMP_WORDS[1]} ) == django-admin.py) &&
( -r ${COMP_WORDS[1]} ) ) ]] ; then
case ${cur} in
@@ -79,10 +87,28 @@ _django_completion()
adminindex|install|reset| \
sql|sqlall|sqlclear|sqlindexes| \
sqlinitialdata|sqlreset|sqlsequencereset)
- # App completion isn't yet implemented, but here's where that
- # would go.
- # COMPREPLY=( $(compgen -W "auth core" -- ${cur}) )
- COMPREPLY=()
+ # App completion
+ settings=""
+ # If settings.py in the PWD, use that
+ if [ -e settings.py ] ; then
+ settings="$PWD/settings.py"
+ else
+ # Use the ENV variable if it is set
+ if [ $DJANGO_SETTINGS_MODULE ] ; then
+ settings=$DJANGO_SETTINGS_MODULE
+ fi
+ fi
+ # Couldn't find settings so return nothing
+ if [ -z $settings ] ; then
+ COMPREPLY=()
+ # Otherwise inspect settings.py file
+ else
+ apps=`sed -n "/INSTALLED_APPS = (/,/)/p" $settings | \
+ grep -v "django.contrib" |
+ sed -n "s/^[ ]*'\(.*\.\)*\(.*\)'.*$/\2 /pg" | \
+ tr -d "\n"`
+ COMPREPLY=( $(compgen -W "${apps}" -- ${cur}) )
+ fi
return 0
;;
@@ -117,3 +143,17 @@ _django_completion()
}
complete -F _django_completion django-admin.py manage.py
+
+# Support for multiple interpreters.
+unset pythons
+if command -v whereis &>/dev/null; then
+ python_interpreters=$(whereis python | cut -d " " -f 2-)
+ for python in $python_interpreters; do
+ pythons="${pythons} $(basename $python)"
+ done
+ pythons=$(echo $pythons | tr " " "\n" | sort -u | tr "\n" " ")
+else
+ pythons=python
+fi
+
+complete -F _django_completion -o default $pythons
diff --git a/scripts/rpm-install.sh b/scripts/rpm-install.sh
new file mode 100644
index 0000000000..07a087c447
--- /dev/null
+++ b/scripts/rpm-install.sh
@@ -0,0 +1,19 @@
+#! /bin/sh
+#
+# this file is *inserted* into the install section of the generated
+# spec file
+#
+
+# this is, what dist.py normally does
+python setup.py install --root=${RPM_BUILD_ROOT} --record="INSTALLED_FILES"
+
+for i in `cat INSTALLED_FILES`; do
+ if [ -f ${RPM_BUILD_ROOT}/$i ]; then
+ echo $i >>FILES
+ fi
+ if [ -d ${RPM_BUILD_ROOT}/$i ]; then
+ echo %dir $i >>DIRS
+ fi
+done
+
+cat DIRS FILES >INSTALLED_FILES
diff --git a/setup.cfg b/setup.cfg
index d3d908abf5..ce9779aa00 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,3 +1,4 @@
[bdist_rpm]
doc_files = docs/*.txt
+install-script = scripts/rpm-install.sh
diff --git a/setup.py b/setup.py
index 13ad065681..6fd6fab816 100644
--- a/setup.py
+++ b/setup.py
@@ -28,7 +28,7 @@ for dirpath, dirnames, filenames in os.walk(django_dir):
# Small hack for working with bdist_wininst.
# See http://mail.python.org/pipermail/distutils-sig/2004-August/004134.html
-if sys.argv[1] == 'bdist_wininst':
+if len(sys.argv) > 1 and sys.argv[1] == 'bdist_wininst':
for file_info in data_files:
file_info[0] = '/PURELIB/%s' % file_info[0]
diff --git a/tests/modeltests/basic/models.py b/tests/modeltests/basic/models.py
index 2ebe857e7e..062f8b29ed 100644
--- a/tests/modeltests/basic/models.py
+++ b/tests/modeltests/basic/models.py
@@ -14,7 +14,7 @@ class Article(models.Model):
class Meta:
ordering = ('pub_date','headline')
-
+
def __str__(self):
return self.headline
@@ -321,7 +321,6 @@ AttributeError: Manager isn't accessible via Article instances
>>> Article.objects.filter(id__lte=4).delete()
>>> Article.objects.all()
[<Article: Article 6>, <Article: Default headline>, <Article: Article 7>, <Article: Updated article 8>]
-
"""}
from django.conf import settings
@@ -360,4 +359,11 @@ __test__['API_TESTS'] += """
>>> a10 = Article.objects.create(headline="Article 10", pub_date=datetime(2005, 7, 31, 12, 30, 45))
>>> Article.objects.get(headline="Article 10")
<Article: Article 10>
+
+# Edge-case test: A year lookup should retrieve all objects in the given
+year, including Jan. 1 and Dec. 31.
+>>> a11 = Article.objects.create(headline='Article 11', pub_date=datetime(2008, 1, 1))
+>>> a12 = Article.objects.create(headline='Article 12', pub_date=datetime(2008, 12, 31, 23, 59, 59, 999999))
+>>> Article.objects.filter(pub_date__year=2008)
+[<Article: Article 11>, <Article: Article 12>]
"""
diff --git a/tests/modeltests/fixtures/__init__.py b/tests/modeltests/fixtures/__init__.py
new file mode 100644
index 0000000000..139597f9cb
--- /dev/null
+++ b/tests/modeltests/fixtures/__init__.py
@@ -0,0 +1,2 @@
+
+
diff --git a/tests/modeltests/fixtures/fixtures/fixture1.json b/tests/modeltests/fixtures/fixtures/fixture1.json
new file mode 100644
index 0000000000..cc11a3e926
--- /dev/null
+++ b/tests/modeltests/fixtures/fixtures/fixture1.json
@@ -0,0 +1,18 @@
+[
+ {
+ "pk": "2",
+ "model": "fixtures.article",
+ "fields": {
+ "headline": "Poker has no place on ESPN",
+ "pub_date": "2006-06-16 12:00:00"
+ }
+ },
+ {
+ "pk": "3",
+ "model": "fixtures.article",
+ "fields": {
+ "headline": "Time to reform copyright",
+ "pub_date": "2006-06-16 13:00:00"
+ }
+ }
+] \ No newline at end of file
diff --git a/tests/modeltests/fixtures/fixtures/fixture2.json b/tests/modeltests/fixtures/fixtures/fixture2.json
new file mode 100644
index 0000000000..01b40d7535
--- /dev/null
+++ b/tests/modeltests/fixtures/fixtures/fixture2.json
@@ -0,0 +1,18 @@
+[
+ {
+ "pk": "3",
+ "model": "fixtures.article",
+ "fields": {
+ "headline": "Copyright is fine the way it is",
+ "pub_date": "2006-06-16 14:00:00"
+ }
+ },
+ {
+ "pk": "4",
+ "model": "fixtures.article",
+ "fields": {
+ "headline": "Django conquers world!",
+ "pub_date": "2006-06-16 15:00:00"
+ }
+ }
+] \ No newline at end of file
diff --git a/tests/modeltests/fixtures/fixtures/fixture2.xml b/tests/modeltests/fixtures/fixtures/fixture2.xml
new file mode 100644
index 0000000000..9ced78162e
--- /dev/null
+++ b/tests/modeltests/fixtures/fixtures/fixture2.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<django-objects version="1.0">
+ <object pk="2" model="fixtures.article">
+ <field type="CharField" name="headline">Poker on TV is great!</field>
+ <field type="DateTimeField" name="pub_date">2006-06-16 11:00:00</field>
+ </object>
+ <object pk="5" model="fixtures.article">
+ <field type="CharField" name="headline">XML identified as leading cause of cancer</field>
+ <field type="DateTimeField" name="pub_date">2006-06-16 16:00:00</field>
+ </object>
+</django-objects> \ No newline at end of file
diff --git a/tests/modeltests/fixtures/fixtures/fixture3.xml b/tests/modeltests/fixtures/fixtures/fixture3.xml
new file mode 100644
index 0000000000..9ced78162e
--- /dev/null
+++ b/tests/modeltests/fixtures/fixtures/fixture3.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<django-objects version="1.0">
+ <object pk="2" model="fixtures.article">
+ <field type="CharField" name="headline">Poker on TV is great!</field>
+ <field type="DateTimeField" name="pub_date">2006-06-16 11:00:00</field>
+ </object>
+ <object pk="5" model="fixtures.article">
+ <field type="CharField" name="headline">XML identified as leading cause of cancer</field>
+ <field type="DateTimeField" name="pub_date">2006-06-16 16:00:00</field>
+ </object>
+</django-objects> \ No newline at end of file
diff --git a/tests/modeltests/fixtures/fixtures/initial_data.json b/tests/modeltests/fixtures/fixtures/initial_data.json
new file mode 100644
index 0000000000..477d781dbc
--- /dev/null
+++ b/tests/modeltests/fixtures/fixtures/initial_data.json
@@ -0,0 +1,10 @@
+[
+ {
+ "pk": "1",
+ "model": "fixtures.article",
+ "fields": {
+ "headline": "Python program becomes self aware",
+ "pub_date": "2006-06-16 11:00:00"
+ }
+ }
+] \ No newline at end of file
diff --git a/tests/modeltests/fixtures/models.py b/tests/modeltests/fixtures/models.py
new file mode 100644
index 0000000000..d82886a6c4
--- /dev/null
+++ b/tests/modeltests/fixtures/models.py
@@ -0,0 +1,88 @@
+"""
+39. Fixtures.
+
+Fixtures are a way of loading data into the database in bulk. Fixure data
+can be stored in any serializable format (including JSON and XML). Fixtures
+are identified by name, and are stored in either a directory named 'fixtures'
+in the application directory, on in one of the directories named in the
+FIXTURE_DIRS setting.
+"""
+
+from django.db import models
+
+class Article(models.Model):
+ headline = models.CharField(maxlength=100, default='Default headline')
+ pub_date = models.DateTimeField()
+
+ def __str__(self):
+ return self.headline
+
+ class Meta:
+ ordering = ('-pub_date', 'headline')
+
+__test__ = {'API_TESTS': """
+>>> from django.core import management
+>>> from django.db.models import get_app
+
+# Reset the database representation of this app.
+# This will return the database to a clean initial state.
+>>> management.flush(verbosity=0, interactive=False)
+
+# Syncdb introduces 1 initial data object from initial_data.json.
+>>> Article.objects.all()
+[<Article: Python program becomes self aware>]
+
+# Load fixture 1. Single JSON file, with two objects.
+>>> management.load_data(['fixture1.json'], verbosity=0)
+>>> Article.objects.all()
+[<Article: Time to reform copyright>, <Article: Poker has no place on ESPN>, <Article: Python program becomes self aware>]
+
+# Load fixture 2. JSON file imported by default. Overwrites some existing objects
+>>> management.load_data(['fixture2.json'], verbosity=0)
+>>> Article.objects.all()
+[<Article: Django conquers world!>, <Article: Copyright is fine the way it is>, <Article: Poker has no place on ESPN>, <Article: Python program becomes self aware>]
+
+# Load fixture 3, XML format.
+>>> management.load_data(['fixture3.xml'], verbosity=0)
+>>> Article.objects.all()
+[<Article: XML identified as leading cause of cancer>, <Article: Django conquers world!>, <Article: Copyright is fine the way it is>, <Article: Poker on TV is great!>, <Article: Python program becomes self aware>]
+
+# Load a fixture that doesn't exist
+>>> management.load_data(['unknown.json'], verbosity=0)
+
+# object list is unaffected
+>>> Article.objects.all()
+[<Article: XML identified as leading cause of cancer>, <Article: Django conquers world!>, <Article: Copyright is fine the way it is>, <Article: Poker on TV is great!>, <Article: Python program becomes self aware>]
+
+# Reset the database representation of this app. This will delete all data.
+>>> management.flush(verbosity=0, interactive=False)
+>>> Article.objects.all()
+[<Article: Python program becomes self aware>]
+
+# Load fixture 1 again, using format discovery
+>>> management.load_data(['fixture1'], verbosity=0)
+>>> Article.objects.all()
+[<Article: Time to reform copyright>, <Article: Poker has no place on ESPN>, <Article: Python program becomes self aware>]
+
+# Try to load fixture 2 using format discovery; this will fail
+# because there are two fixture2's in the fixtures directory
+>>> management.load_data(['fixture2'], verbosity=0) # doctest: +ELLIPSIS
+Multiple fixtures named 'fixture2' in '.../fixtures'. Aborting.
+
+>>> Article.objects.all()
+[<Article: Time to reform copyright>, <Article: Poker has no place on ESPN>, <Article: Python program becomes self aware>]
+
+# Dump the current contents of the database as a JSON fixture
+>>> management.dump_data(['fixtures'], format='json')
+[{"pk": "3", "model": "fixtures.article", "fields": {"headline": "Time to reform copyright", "pub_date": "2006-06-16 13:00:00"}}, {"pk": "2", "model": "fixtures.article", "fields": {"headline": "Poker has no place on ESPN", "pub_date": "2006-06-16 12:00:00"}}, {"pk": "1", "model": "fixtures.article", "fields": {"headline": "Python program becomes self aware", "pub_date": "2006-06-16 11:00:00"}}]
+"""}
+
+from django.test import TestCase
+
+class SampleTestCase(TestCase):
+ fixtures = ['fixture1.json', 'fixture2.json']
+
+ def testClassFixtures(self):
+ "Check that test case has installed 4 fixture objects"
+ self.assertEqual(Article.objects.count(), 4)
+ self.assertEquals(str(Article.objects.all()), "[<Article: Django conquers world!>, <Article: Copyright is fine the way it is>, <Article: Poker has no place on ESPN>, <Article: Python program becomes self aware>]")
diff --git a/tests/modeltests/lookup/models.py b/tests/modeltests/lookup/models.py
index aa903d1a64..106c97d3b4 100644
--- a/tests/modeltests/lookup/models.py
+++ b/tests/modeltests/lookup/models.py
@@ -58,6 +58,17 @@ Article 4
>>> Article.objects.filter(headline__startswith='Blah blah').count()
0L
+# count() should respect sliced query sets.
+>>> articles = Article.objects.all()
+>>> articles.count()
+7L
+>>> articles[:4].count()
+4
+>>> articles[1:100].count()
+6L
+>>> articles[10:100].count()
+0
+
# Date and date/time lookups can also be done with strings.
>>> Article.objects.filter(pub_date__exact='2005-07-27 00:00:00').count()
3L
@@ -198,6 +209,8 @@ DoesNotExist: Article matching query does not exist.
[]
>>> Article.objects.none().count()
0
+>>> [article for article in Article.objects.none().iterator()]
+[]
# using __in with an empty list should return an empty query set
>>> Article.objects.filter(id__in=[])
@@ -206,4 +219,15 @@ DoesNotExist: Article matching query does not exist.
>>> Article.objects.exclude(id__in=[])
[<Article: Article with \ backslash>, <Article: Article% with percent sign>, <Article: Article_ with underscore>, <Article: Article 5>, <Article: Article 6>, <Article: Article 4>, <Article: Article 2>, <Article: Article 3>, <Article: Article 7>, <Article: Article 1>]
+# Programming errors are pointed out with nice error messages
+>>> Article.objects.filter(pub_date_year='2005').count()
+Traceback (most recent call last):
+ ...
+TypeError: Cannot resolve keyword 'pub_date_year' into field
+
+>>> Article.objects.filter(headline__starts='Article')
+Traceback (most recent call last):
+ ...
+TypeError: Cannot resolve keyword 'headline__starts' into field
+
"""}
diff --git a/tests/modeltests/model_forms/models.py b/tests/modeltests/model_forms/models.py
index 657d506b33..e64174a23f 100644
--- a/tests/modeltests/model_forms/models.py
+++ b/tests/modeltests/model_forms/models.py
@@ -40,13 +40,27 @@ class Writer(models.Model):
class Article(models.Model):
headline = models.CharField(maxlength=50)
pub_date = models.DateField()
+ created = models.DateField(editable=False)
writer = models.ForeignKey(Writer)
article = models.TextField()
categories = models.ManyToManyField(Category, blank=True)
+ def save(self):
+ import datetime
+ if not self.id:
+ self.created = datetime.date.today()
+ return super(Article, self).save()
+
def __str__(self):
return self.headline
+class PhoneNumber(models.Model):
+ phone = models.PhoneNumberField()
+ description = models.CharField(maxlength=20)
+
+ def __str__(self):
+ return self.phone
+
__test__ = {'API_TESTS': """
>>> from django.newforms import form_for_model, form_for_instance, save_instance, BaseForm, Form, CharField
>>> import datetime
@@ -281,4 +295,170 @@ existing Category instance.
<Category: Third>
>>> Category.objects.get(id=3)
<Category: Third>
+
+Here, we demonstrate that choices for a ForeignKey ChoiceField are determined
+at runtime, based on the data in the database when the form is displayed, not
+the data in the database when the form is instantiated.
+>>> ArticleForm = form_for_model(Article)
+>>> f = ArticleForm(auto_id=False)
+>>> print f.as_ul()
+<li>Headline: <input type="text" name="headline" maxlength="50" /></li>
+<li>Pub date: <input type="text" name="pub_date" /></li>
+<li>Writer: <select name="writer">
+<option value="" selected="selected">---------</option>
+<option value="1">Mike Royko</option>
+<option value="2">Bob Woodward</option>
+</select></li>
+<li>Article: <textarea name="article"></textarea></li>
+<li>Categories: <select multiple="multiple" name="categories">
+<option value="1">Entertainment</option>
+<option value="2">It&#39;s a test</option>
+<option value="3">Third</option>
+</select> Hold down "Control", or "Command" on a Mac, to select more than one.</li>
+>>> Category.objects.create(name='Fourth', url='4th')
+<Category: Fourth>
+>>> Writer.objects.create(name='Carl Bernstein')
+<Writer: Carl Bernstein>
+>>> print f.as_ul()
+<li>Headline: <input type="text" name="headline" maxlength="50" /></li>
+<li>Pub date: <input type="text" name="pub_date" /></li>
+<li>Writer: <select name="writer">
+<option value="" selected="selected">---------</option>
+<option value="1">Mike Royko</option>
+<option value="2">Bob Woodward</option>
+<option value="3">Carl Bernstein</option>
+</select></li>
+<li>Article: <textarea name="article"></textarea></li>
+<li>Categories: <select multiple="multiple" name="categories">
+<option value="1">Entertainment</option>
+<option value="2">It&#39;s a test</option>
+<option value="3">Third</option>
+<option value="4">Fourth</option>
+</select> Hold down "Control", or "Command" on a Mac, to select more than one.</li>
+
+# ModelChoiceField ############################################################
+
+>>> from django.newforms import ModelChoiceField, ModelMultipleChoiceField
+
+>>> f = ModelChoiceField(Category.objects.all())
+>>> 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(0)
+Traceback (most recent call last):
+...
+ValidationError: [u'Select a valid choice. That choice is not one of the available choices.']
+>>> f.clean(3)
+<Category: Third>
+>>> f.clean(2)
+<Category: It's a test>
+
+# Add a Category object *after* the ModelChoiceField has already been
+# instantiated. This proves clean() checks the database during clean() rather
+# than caching it at time of instantiation.
+>>> Category.objects.create(name='Fifth', url='5th')
+<Category: Fifth>
+>>> f.clean(5)
+<Category: Fifth>
+
+# Delete a Category object *after* the ModelChoiceField has already been
+# instantiated. This proves clean() checks the database during clean() rather
+# than caching it at time of instantiation.
+>>> Category.objects.get(url='5th').delete()
+>>> f.clean(5)
+Traceback (most recent call last):
+...
+ValidationError: [u'Select a valid choice. That choice is not one of the available choices.']
+
+>>> f = ModelChoiceField(Category.objects.filter(pk=1), required=False)
+>>> print f.clean('')
+None
+>>> f.clean('')
+>>> f.clean('1')
+<Category: Entertainment>
+>>> f.clean('100')
+Traceback (most recent call last):
+...
+ValidationError: [u'Select a valid choice. That choice is not one of the available choices.']
+
+# ModelMultipleChoiceField ####################################################
+
+>>> f = ModelMultipleChoiceField(Category.objects.all())
+>>> f.clean(None)
+Traceback (most recent call last):
+...
+ValidationError: [u'This field is required.']
+>>> f.clean([])
+Traceback (most recent call last):
+...
+ValidationError: [u'This field is required.']
+>>> f.clean([1])
+[<Category: Entertainment>]
+>>> f.clean([2])
+[<Category: It's a test>]
+>>> f.clean(['1'])
+[<Category: Entertainment>]
+>>> f.clean(['1', '2'])
+[<Category: Entertainment>, <Category: It's a test>]
+>>> f.clean([1, '2'])
+[<Category: Entertainment>, <Category: It's a test>]
+>>> f.clean((1, '2'))
+[<Category: Entertainment>, <Category: It's a test>]
+>>> f.clean(['100'])
+Traceback (most recent call last):
+...
+ValidationError: [u'Select a valid choice. 100 is not one of the available choices.']
+>>> f.clean('hello')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a list of values.']
+
+# Add a Category object *after* the ModelChoiceField has already been
+# instantiated. This proves clean() checks the database during clean() rather
+# than caching it at time of instantiation.
+>>> Category.objects.create(id=6, name='Sixth', url='6th')
+<Category: Sixth>
+>>> f.clean([6])
+[<Category: Sixth>]
+
+# Delete a Category object *after* the ModelChoiceField has already been
+# instantiated. This proves clean() checks the database during clean() rather
+# than caching it at time of instantiation.
+>>> Category.objects.get(url='6th').delete()
+>>> f.clean([6])
+Traceback (most recent call last):
+...
+ValidationError: [u'Select a valid choice. 6 is not one of the available choices.']
+
+>>> f = ModelMultipleChoiceField(Category.objects.all(), required=False)
+>>> f.clean([])
+[]
+>>> f.clean(())
+[]
+>>> f.clean(['10'])
+Traceback (most recent call last):
+...
+ValidationError: [u'Select a valid choice. 10 is not one of the available choices.']
+>>> f.clean(['3', '10'])
+Traceback (most recent call last):
+...
+ValidationError: [u'Select a valid choice. 10 is not one of the available choices.']
+>>> f.clean(['1', '10'])
+Traceback (most recent call last):
+...
+ValidationError: [u'Select a valid choice. 10 is not one of the available choices.']
+
+# PhoneNumberField ############################################################
+
+>>> PhoneNumberForm = form_for_model(PhoneNumber)
+>>> f = PhoneNumberForm({'phone': '(312) 555-1212', 'description': 'Assistance'})
+>>> f.is_valid()
+True
+>>> f.clean_data
+{'phone': u'312-555-1212', 'description': u'Assistance'}
"""}
diff --git a/tests/modeltests/select_related/__init__.py b/tests/modeltests/select_related/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/modeltests/select_related/__init__.py
diff --git a/tests/modeltests/select_related/models.py b/tests/modeltests/select_related/models.py
new file mode 100644
index 0000000000..8a19267870
--- /dev/null
+++ b/tests/modeltests/select_related/models.py
@@ -0,0 +1,152 @@
+"""
+XXX. Tests for ``select_related()``
+
+``select_related()`` follows all relationships and pre-caches any foreign key
+values so that complex trees can be fetched in a single query. However, this
+isn't always a good idea, so the ``depth`` argument control how many "levels"
+the select-related behavior will traverse.
+"""
+
+from django.db import models
+
+# Who remembers high school biology?
+
+class Domain(models.Model):
+ name = models.CharField(maxlength=50)
+ def __str__(self):
+ return self.name
+
+class Kingdom(models.Model):
+ name = models.CharField(maxlength=50)
+ domain = models.ForeignKey(Domain)
+ def __str__(self):
+ return self.name
+
+class Phylum(models.Model):
+ name = models.CharField(maxlength=50)
+ kingdom = models.ForeignKey(Kingdom)
+ def __str__(self):
+ return self.name
+
+class Klass(models.Model):
+ name = models.CharField(maxlength=50)
+ phylum = models.ForeignKey(Phylum)
+ def __str__(self):
+ return self.name
+
+class Order(models.Model):
+ name = models.CharField(maxlength=50)
+ klass = models.ForeignKey(Klass)
+ def __str__(self):
+ return self.name
+
+class Family(models.Model):
+ name = models.CharField(maxlength=50)
+ order = models.ForeignKey(Order)
+ def __str__(self):
+ return self.name
+
+class Genus(models.Model):
+ name = models.CharField(maxlength=50)
+ family = models.ForeignKey(Family)
+ def __str__(self):
+ return self.name
+
+class Species(models.Model):
+ name = models.CharField(maxlength=50)
+ genus = models.ForeignKey(Genus)
+ def __str__(self):
+ return self.name
+
+def create_tree(stringtree):
+ """Helper to create a complete tree"""
+ names = stringtree.split()
+ models = [Domain, Kingdom, Phylum, Klass, Order, Family, Genus, Species]
+ assert len(names) == len(models), (names, models)
+
+ parent = None
+ for name, model in zip(names, models):
+ try:
+ obj = model.objects.get(name=name)
+ except model.DoesNotExist:
+ obj = model(name=name)
+ if parent:
+ setattr(obj, parent.__class__.__name__.lower(), parent)
+ obj.save()
+ parent = obj
+
+__test__ = {'API_TESTS':"""
+
+# Set up.
+# The test runner sets settings.DEBUG to False, but we want to gather queries
+# so we'll set it to True here and reset it at the end of the test suite.
+>>> from django.conf import settings
+>>> settings.DEBUG = True
+
+>>> create_tree("Eukaryota Animalia Anthropoda Insecta Diptera Drosophilidae Drosophila melanogaster")
+>>> create_tree("Eukaryota Animalia Chordata Mammalia Primates Hominidae Homo sapiens")
+>>> create_tree("Eukaryota Plantae Magnoliophyta Magnoliopsida Fabales Fabaceae Pisum sativum")
+>>> create_tree("Eukaryota Fungi Basidiomycota Homobasidiomycatae Agaricales Amanitacae Amanita muscaria")
+
+>>> from django import db
+
+# Normally, accessing FKs doesn't fill in related objects:
+>>> db.reset_queries()
+>>> fly = Species.objects.get(name="melanogaster")
+>>> fly.genus.family.order.klass.phylum.kingdom.domain
+<Domain: Eukaryota>
+>>> len(db.connection.queries)
+8
+
+# However, a select_related() call will fill in those related objects without any extra queries:
+>>> db.reset_queries()
+>>> person = Species.objects.select_related().get(name="sapiens")
+>>> person.genus.family.order.klass.phylum.kingdom.domain
+<Domain: Eukaryota>
+>>> len(db.connection.queries)
+1
+
+# select_related() also of course applies to entire lists, not just items.
+# Without select_related()
+>>> db.reset_queries()
+>>> world = Species.objects.all()
+>>> [o.genus.family for o in world]
+[<Family: Drosophilidae>, <Family: Hominidae>, <Family: Fabaceae>, <Family: Amanitacae>]
+>>> len(db.connection.queries)
+9
+
+# With select_related():
+>>> db.reset_queries()
+>>> world = Species.objects.all().select_related()
+>>> [o.genus.family for o in world]
+[<Family: Drosophilidae>, <Family: Hominidae>, <Family: Fabaceae>, <Family: Amanitacae>]
+>>> len(db.connection.queries)
+1
+
+# The "depth" argument to select_related() will stop the descent at a particular level:
+>>> db.reset_queries()
+>>> pea = Species.objects.select_related(depth=1).get(name="sativum")
+>>> pea.genus.family.order.klass.phylum.kingdom.domain
+<Domain: Eukaryota>
+
+# Notice: one few query than above because of depth=1
+>>> len(db.connection.queries)
+7
+
+>>> db.reset_queries()
+>>> pea = Species.objects.select_related(depth=5).get(name="sativum")
+>>> pea.genus.family.order.klass.phylum.kingdom.domain
+<Domain: Eukaryota>
+>>> len(db.connection.queries)
+3
+
+>>> db.reset_queries()
+>>> world = Species.objects.all().select_related(depth=2)
+>>> [o.genus.family.order for o in world]
+[<Order: Diptera>, <Order: Primates>, <Order: Fabales>, <Order: Agaricales>]
+>>> len(db.connection.queries)
+5
+
+# Reset DEBUG to where we found it.
+>>> settings.DEBUG = False
+"""}
diff --git a/tests/modeltests/serializers/models.py b/tests/modeltests/serializers/models.py
index e24ff537c1..e86546c6fe 100644
--- a/tests/modeltests/serializers/models.py
+++ b/tests/modeltests/serializers/models.py
@@ -139,4 +139,24 @@ __test__ = {'API_TESTS':"""
... print obj
<DeserializedObject: Profile of Joe>
+# Objects ids can be referenced before they are defined in the serialization data
+# However, the deserialization process will need to be contained within a transaction
+>>> json = '[{"pk": "3", "model": "serializers.article", "fields": {"headline": "Forward references pose no problem", "pub_date": "2006-06-16 15:00:00", "categories": [4, 1], "author": 4}}, {"pk": "4", "model": "serializers.category", "fields": {"name": "Reference"}}, {"pk": "4", "model": "serializers.author", "fields": {"name": "Agnes"}}]'
+>>> from django.db import transaction
+>>> transaction.enter_transaction_management()
+>>> transaction.managed(True)
+>>> for obj in serializers.deserialize("json", json):
+... obj.save()
+
+>>> transaction.commit()
+>>> transaction.leave_transaction_management()
+
+>>> article = Article.objects.get(pk=3)
+>>> article
+<Article: Forward references pose no problem>
+>>> article.categories.all()
+[<Category: Reference>, <Category: Sports>]
+>>> article.author
+<Author: Agnes>
+
"""}
diff --git a/tests/modeltests/test_client/fixtures/testdata.json b/tests/modeltests/test_client/fixtures/testdata.json
new file mode 100644
index 0000000000..5c9e415240
--- /dev/null
+++ b/tests/modeltests/test_client/fixtures/testdata.json
@@ -0,0 +1,20 @@
+[
+ {
+ "pk": "1",
+ "model": "auth.user",
+ "fields": {
+ "username": "testclient",
+ "first_name": "Test",
+ "last_name": "Client",
+ "is_active": true,
+ "is_superuser": false,
+ "is_staff": false,
+ "last_login": "2006-12-17 07:03:31",
+ "groups": [],
+ "user_permissions": [],
+ "password": "sha1$6efc0$f93efe9fd7542f25a7be94871ea45aa95de57161",
+ "email": "testclient@example.com",
+ "date_joined": "2006-12-17 07:03:31"
+ }
+ }
+] \ No newline at end of file
diff --git a/tests/modeltests/test_client/management.py b/tests/modeltests/test_client/management.py
deleted file mode 100644
index 9b5a5c498e..0000000000
--- a/tests/modeltests/test_client/management.py
+++ /dev/null
@@ -1,10 +0,0 @@
-from django.dispatch import dispatcher
-from django.db.models import signals
-import models as test_client_app
-from django.contrib.auth.models import User
-
-def setup_test(app, created_models, verbosity):
- # Create a user account for the login-based tests
- User.objects.create_user('testclient','testclient@example.com', 'password')
-
-dispatcher.connect(setup_test, sender=test_client_app, signal=signals.post_syncdb)
diff --git a/tests/modeltests/test_client/models.py b/tests/modeltests/test_client/models.py
index c5b1a241ca..a3a9749162 100644
--- a/tests/modeltests/test_client/models.py
+++ b/tests/modeltests/test_client/models.py
@@ -19,10 +19,11 @@ testing against the contexts and templates produced by a view,
rather than the HTML rendered to the end-user.
"""
-from django.test.client import Client
-import unittest
+from django.test import Client, TestCase
-class ClientTest(unittest.TestCase):
+class ClientTest(TestCase):
+ fixtures = ['testdata.json']
+
def setUp(self):
"Set up test environment"
self.client = Client()
@@ -43,7 +44,7 @@ class ClientTest(unittest.TestCase):
# Check some response details
self.assertEqual(response.status_code, 200)
- self.assertEqual(response.template.name, 'Empty POST Template')
+ self.assertEqual(response.template.name, 'Empty GET Template')
def test_empty_post(self):
"POST an empty dictionary to a view"
@@ -53,7 +54,7 @@ class ClientTest(unittest.TestCase):
self.assertEqual(response.status_code, 200)
self.assertEqual(response.template.name, 'Empty POST Template')
- def test_post_view(self):
+ def test_post(self):
"POST some data to a view"
post_data = {
'value': 37
@@ -66,6 +67,14 @@ class ClientTest(unittest.TestCase):
self.assertEqual(response.template.name, 'POST Template')
self.failUnless('Data received' in response.content)
+ def test_raw_post(self):
+ test_doc = """<?xml version="1.0" encoding="utf-8"?><library><book><title>Blink</title><author>Malcolm Gladwell</author></book></library>"""
+ response = self.client.post("/test_client/raw_post_view/", test_doc,
+ content_type="text/xml")
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(response.template.name, "Book template")
+ self.assertEqual(response.content, "Blink - Malcolm Gladwell")
+
def test_redirect(self):
"GET a URL that redirects elsewhere"
response = self.client.get('/test_client/redirect_view/')
@@ -89,7 +98,7 @@ class ClientTest(unittest.TestCase):
# Request a page that requires a login
response = self.client.login('/test_client/login_protected_view/', 'testclient', 'password')
- self.assertTrue(response)
+ self.failUnless(response)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.context['user'].username, 'testclient')
self.assertEqual(response.template.name, 'Login Template')
@@ -98,4 +107,30 @@ class ClientTest(unittest.TestCase):
"Request a page that is protected with @login, but use bad credentials"
response = self.client.login('/test_client/login_protected_view/', 'otheruser', 'nopassword')
- self.assertFalse(response)
+ self.failIf(response)
+
+ def test_session_modifying_view(self):
+ "Request a page that modifies the session"
+ # Session value isn't set initially
+ try:
+ self.client.session['tobacconist']
+ self.fail("Shouldn't have a session value")
+ except KeyError:
+ pass
+
+ from django.contrib.sessions.models import Session
+ response = self.client.post('/test_client/session_view/')
+
+ # Check that the session was modified
+ self.assertEquals(self.client.session['tobacconist'], 'hovercraft')
+
+ def test_view_with_exception(self):
+ "Request a page that is known to throw an error"
+ self.assertRaises(KeyError, self.client.get, "/test_client/broken_view/")
+
+ #Try the same assertion, a different way
+ try:
+ self.client.get('/test_client/broken_view/')
+ self.fail('Should raise an error')
+ except KeyError:
+ pass
diff --git a/tests/modeltests/test_client/urls.py b/tests/modeltests/test_client/urls.py
index 09bba5c007..0bef1e9b71 100644
--- a/tests/modeltests/test_client/urls.py
+++ b/tests/modeltests/test_client/urls.py
@@ -4,6 +4,9 @@ import views
urlpatterns = patterns('',
(r'^get_view/$', views.get_view),
(r'^post_view/$', views.post_view),
+ (r'^raw_post_view/$', views.raw_post_view),
(r'^redirect_view/$', views.redirect_view),
(r'^login_protected_view/$', views.login_protected_view),
+ (r'^session_view/$', views.session_view),
+ (r'^broken_view/$', views.broken_view)
)
diff --git a/tests/modeltests/test_client/views.py b/tests/modeltests/test_client/views.py
index 7acfc2db60..653e9a10e9 100644
--- a/tests/modeltests/test_client/views.py
+++ b/tests/modeltests/test_client/views.py
@@ -1,3 +1,4 @@
+from xml.dom.minidom import parseString
from django.template import Context, Template
from django.http import HttpResponse, HttpResponseRedirect
from django.contrib.auth.decorators import login_required
@@ -13,15 +14,34 @@ def post_view(request):
"""A view that expects a POST, and returns a different template depending
on whether any POST data is available
"""
- if request.POST:
- t = Template('Data received: {{ data }} is the value.', name='POST Template')
- c = Context({'data': request.POST['value']})
+ if request.method == 'POST':
+ if request.POST:
+ t = Template('Data received: {{ data }} is the value.', name='POST Template')
+ c = Context({'data': request.POST['value']})
+ else:
+ t = Template('Viewing POST page.', name='Empty POST Template')
+ c = Context()
else:
- t = Template('Viewing POST page.', name='Empty POST Template')
+ t = Template('Viewing GET page.', name='Empty GET Template')
c = Context()
-
+
return HttpResponse(t.render(c))
+def raw_post_view(request):
+ """A view which expects raw XML to be posted and returns content extracted
+ from the XML"""
+ if request.method == 'POST':
+ root = parseString(request.raw_post_data)
+ first_book = root.firstChild.firstChild
+ title, author = [n.firstChild.nodeValue for n in first_book.childNodes]
+ t = Template("{{ title }} - {{ author }}", name="Book template")
+ c = Context({"title": title, "author": author})
+ else:
+ t = Template("GET request.", name="Book GET template")
+ c = Context()
+
+ return HttpResponse(t.render(c))
+
def redirect_view(request):
"A view that redirects all requests to the GET view"
return HttpResponseRedirect('/test_client/get_view/')
@@ -32,4 +52,17 @@ def login_protected_view(request):
c = Context({'user': request.user})
return HttpResponse(t.render(c))
-login_protected_view = login_required(login_protected_view) \ No newline at end of file
+login_protected_view = login_required(login_protected_view)
+
+def session_view(request):
+ "A view that modifies the session"
+ request.session['tobacconist'] = 'hovercraft'
+
+ t = Template('This is a view that modifies the session.',
+ name='Session Modifying View Template')
+ c = Context()
+ return HttpResponse(t.render(c))
+
+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.")
diff --git a/tests/modeltests/validation/models.py b/tests/modeltests/validation/models.py
index a9a3d3f485..1066faca4f 100644
--- a/tests/modeltests/validation/models.py
+++ b/tests/modeltests/validation/models.py
@@ -146,4 +146,8 @@ u'john@example.com'
>>> p.validate()
{'email': ['Enter a valid e-mail address.']}
+# Make sure that Date and DateTime return validation errors and don't raise Python errors.
+>>> Person(name='John Doe', is_child=True, email='abc@def.com').validate()
+{'favorite_moment': ['This field is required.'], 'birthdate': ['This field is required.']}
+
"""}
diff --git a/tests/regressiontests/bug639/__init__.py b/tests/regressiontests/bug639/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/regressiontests/bug639/__init__.py
diff --git a/tests/regressiontests/bug639/models.py b/tests/regressiontests/bug639/models.py
new file mode 100644
index 0000000000..7cfdfc82ef
--- /dev/null
+++ b/tests/regressiontests/bug639/models.py
@@ -0,0 +1,16 @@
+import tempfile
+from django.db import models
+
+class Photo(models.Model):
+ title = models.CharField(maxlength=30)
+ image = models.FileField(upload_to=tempfile.gettempdir())
+
+ # Support code for the tests; this keeps track of how many times save() gets
+ # called on each instance.
+ def __init__(self, *args, **kwargs):
+ super(Photo, self).__init__(*args, **kwargs)
+ self._savecount = 0
+
+ def save(self):
+ super(Photo, self).save()
+ self._savecount +=1 \ No newline at end of file
diff --git a/tests/regressiontests/bug639/test.jpg b/tests/regressiontests/bug639/test.jpg
new file mode 100644
index 0000000000..391b57a0f3
--- /dev/null
+++ b/tests/regressiontests/bug639/test.jpg
Binary files differ
diff --git a/tests/regressiontests/bug639/tests.py b/tests/regressiontests/bug639/tests.py
new file mode 100644
index 0000000000..f9596d06cb
--- /dev/null
+++ b/tests/regressiontests/bug639/tests.py
@@ -0,0 +1,42 @@
+"""
+Tests for file field behavior, and specifically #639, in which Model.save() gets
+called *again* for each FileField. This test will fail if calling an
+auto-manipulator's save() method causes Model.save() to be called more than once.
+"""
+
+import os
+import unittest
+from regressiontests.bug639.models import Photo
+from django.http import QueryDict
+from django.utils.datastructures import MultiValueDict
+
+class Bug639Test(unittest.TestCase):
+
+ def testBug639(self):
+ """
+ Simulate a file upload and check how many times Model.save() gets called.
+ """
+ # Grab an image for testing
+ img = open(os.path.join(os.path.dirname(__file__), "test.jpg"), "rb").read()
+
+ # Fake a request query dict with the file
+ qd = QueryDict("title=Testing&image=", mutable=True)
+ qd["image_file"] = {
+ "filename" : "test.jpg",
+ "content-type" : "image/jpeg",
+ "content" : img
+ }
+
+ manip = Photo.AddManipulator()
+ manip.do_html2python(qd)
+ p = manip.save(qd)
+
+ # Check the savecount stored on the object (see the model)
+ self.assertEqual(p._savecount, 1)
+
+ def tearDown(self):
+ """
+ Make sure to delete the "uploaded" file to avoid clogging /tmp.
+ """
+ p = Photo.objects.get()
+ os.unlink(p.get_image_filename()) \ No newline at end of file
diff --git a/tests/regressiontests/datastructures/__init__.py b/tests/regressiontests/datastructures/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/regressiontests/datastructures/__init__.py
diff --git a/tests/regressiontests/datastructures/models.py b/tests/regressiontests/datastructures/models.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/regressiontests/datastructures/models.py
diff --git a/tests/regressiontests/datastructures/tests.py b/tests/regressiontests/datastructures/tests.py
new file mode 100644
index 0000000000..e008c255f1
--- /dev/null
+++ b/tests/regressiontests/datastructures/tests.py
@@ -0,0 +1,65 @@
+"""
+# Tests for stuff in django.utils.datastructures.
+
+>>> from django.utils.datastructures import *
+
+### MergeDict #################################################################
+
+>>> d1 = {'chris':'cool','camri':'cute','cotton':'adorable','tulip':'snuggable', 'twoofme':'firstone'}
+>>> d2 = {'chris2':'cool2','camri2':'cute2','cotton2':'adorable2','tulip2':'snuggable2'}
+>>> d3 = {'chris3':'cool3','camri3':'cute3','cotton3':'adorable3','tulip3':'snuggable3'}
+>>> d4 = {'twoofme':'secondone'}
+>>> md = MergeDict( d1,d2,d3 )
+>>> md['chris']
+'cool'
+>>> md['camri']
+'cute'
+>>> md['twoofme']
+'firstone'
+>>> md2 = md.copy()
+>>> md2['chris']
+'cool'
+
+### MultiValueDict ##########################################################
+
+>>> d = MultiValueDict({'name': ['Adrian', 'Simon'], 'position': ['Developer']})
+>>> d['name']
+'Simon'
+>>> d.getlist('name')
+['Adrian', 'Simon']
+>>> d.get('lastname', 'nonexistent')
+'nonexistent'
+>>> d.setlist('lastname', ['Holovaty', 'Willison'])
+
+### SortedDict #################################################################
+
+>>> d = SortedDict()
+>>> d['one'] = 'one'
+>>> d['two'] = 'two'
+>>> d['three'] = 'three'
+>>> d['one']
+'one'
+>>> d['two']
+'two'
+>>> d['three']
+'three'
+>>> d.keys()
+['one', 'two', 'three']
+>>> d.values()
+['one', 'two', 'three']
+>>> d['one'] = 'not one'
+>>> d['one']
+'not one'
+>>> d.keys() == d.copy().keys()
+True
+
+### DotExpandedDict ############################################################
+
+>>> d = DotExpandedDict({'person.1.firstname': ['Simon'], 'person.1.lastname': ['Willison'], 'person.2.firstname': ['Adrian'], 'person.2.lastname': ['Holovaty']})
+>>> d['person']['1']['lastname']
+['Willison']
+>>> d['person']['2']['lastname']
+['Holovaty']
+>>> d['person']['2']['firstname']
+['Adrian']
+"""
diff --git a/tests/regressiontests/dateformat/tests.py b/tests/regressiontests/dateformat/tests.py
index 6e28759a92..f9f84145c5 100644
--- a/tests/regressiontests/dateformat/tests.py
+++ b/tests/regressiontests/dateformat/tests.py
@@ -17,6 +17,8 @@ r"""
'07'
>>> format(my_birthday, 'M')
'Jul'
+>>> format(my_birthday, 'b')
+'jul'
>>> format(my_birthday, 'n')
'7'
>>> format(my_birthday, 'N')
diff --git a/tests/regressiontests/defaultfilters/tests.py b/tests/regressiontests/defaultfilters/tests.py
index 439a40c31b..c850806052 100644
--- a/tests/regressiontests/defaultfilters/tests.py
+++ b/tests/regressiontests/defaultfilters/tests.py
@@ -87,6 +87,20 @@ u'\xeb'
>>> truncatewords('A sentence with a few words in it', 'not a number')
'A sentence with a few words in it'
+>>> truncatewords_html('<p>one <a href="#">two - three <br>four</a> five</p>', 0)
+''
+
+>>> truncatewords_html('<p>one <a href="#">two - three <br>four</a> five</p>', 2)
+'<p>one <a href="#">two ...</a></p>'
+
+>>> truncatewords_html('<p>one <a href="#">two - three <br>four</a> five</p>', 4)
+'<p>one <a href="#">two - three <br>four ...</a></p>'
+
+>>> truncatewords_html('<p>one <a href="#">two - three <br>four</a> five</p>', 5)
+'<p>one <a href="#">two - three <br>four</a> five</p>'
+
+>>> truncatewords_html('<p>one <a href="#">two - three <br>four</a> five</p>', 100)
+'<p>one <a href="#">two - three <br>four</a> five</p>'
>>> upper('Mixed case input')
'MIXED CASE INPUT'
@@ -97,6 +111,8 @@ u'\xcb'
>>> urlencode('jack & jill')
'jack%20%26%20jill'
+>>> urlencode(1)
+'1'
>>> urlizetrunc('http://short.com/', 20)
@@ -372,7 +388,53 @@ False
>>> phone2numeric('0800 flowers')
'0800 3569377'
-
+# Filters shouldn't break if passed non-strings
+>>> addslashes(123)
+'123'
+>>> linenumbers(123)
+'1. 123'
+>>> lower(123)
+'123'
+>>> make_list(123)
+['1', '2', '3']
+>>> slugify(123)
+'123'
+>>> title(123)
+'123'
+>>> truncatewords(123, 2)
+'123'
+>>> upper(123)
+'123'
+>>> urlencode(123)
+'123'
+>>> urlize(123)
+'123'
+>>> urlizetrunc(123, 1)
+'123'
+>>> wordcount(123)
+1
+>>> wordwrap(123, 2)
+'123'
+>>> ljust('123', 4)
+'123 '
+>>> rjust('123', 4)
+' 123'
+>>> center('123', 5)
+' 123 '
+>>> center('123', 6)
+' 123 '
+>>> cut(123, '2')
+'13'
+>>> escape(123)
+'123'
+>>> linebreaks(123)
+'<p>123</p>'
+>>> linebreaksbr(123)
+'123'
+>>> removetags(123, 'a')
+'123'
+>>> striptags(123)
+'123'
"""
diff --git a/tests/regressiontests/dispatch/__init__.py b/tests/regressiontests/dispatch/__init__.py
new file mode 100644
index 0000000000..679895bb5c
--- /dev/null
+++ b/tests/regressiontests/dispatch/__init__.py
@@ -0,0 +1,2 @@
+"""Unit-tests for the dispatch project
+"""
diff --git a/tests/regressiontests/dispatch/models.py b/tests/regressiontests/dispatch/models.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/regressiontests/dispatch/models.py
diff --git a/tests/regressiontests/dispatch/tests/__init__.py b/tests/regressiontests/dispatch/tests/__init__.py
new file mode 100644
index 0000000000..0fdefe48a7
--- /dev/null
+++ b/tests/regressiontests/dispatch/tests/__init__.py
@@ -0,0 +1,7 @@
+"""
+Unit-tests for the dispatch project
+"""
+
+from test_dispatcher import *
+from test_robustapply import *
+from test_saferef import *
diff --git a/tests/regressiontests/dispatch/tests/test_dispatcher.py b/tests/regressiontests/dispatch/tests/test_dispatcher.py
new file mode 100644
index 0000000000..0bc99a1505
--- /dev/null
+++ b/tests/regressiontests/dispatch/tests/test_dispatcher.py
@@ -0,0 +1,144 @@
+from django.dispatch.dispatcher import *
+from django.dispatch import dispatcher, robust
+import unittest
+import copy
+
+def x(a):
+ return a
+
+class Dummy(object):
+ pass
+
+class Callable(object):
+ def __call__(self, a):
+ return a
+
+ def a(self, a):
+ return a
+
+class DispatcherTests(unittest.TestCase):
+ """Test suite for dispatcher (barely started)"""
+
+ def setUp(self):
+ # track the initial state, since it's possible that others have bleed receivers in
+ self.sendersBack = copy.copy(dispatcher.sendersBack)
+ self.connections = copy.copy(dispatcher.connections)
+ self.senders = copy.copy(dispatcher.senders)
+
+ def _testIsClean(self):
+ """Assert that everything has been cleaned up automatically"""
+ self.assertEqual(dispatcher.sendersBack, self.sendersBack)
+ self.assertEqual(dispatcher.connections, self.connections)
+ self.assertEqual(dispatcher.senders, self.senders)
+
+ def testExact(self):
+ a = Dummy()
+ signal = 'this'
+ connect(x, signal, a)
+ expected = [(x,a)]
+ result = send('this',a, a=a)
+ self.assertEqual(result, expected)
+ disconnect(x, signal, a)
+ self.assertEqual(list(getAllReceivers(a,signal)), [])
+ self._testIsClean()
+
+ def testAnonymousSend(self):
+ a = Dummy()
+ signal = 'this'
+ connect(x, signal)
+ expected = [(x,a)]
+ result = send(signal,None, a=a)
+ self.assertEqual(result, expected)
+ disconnect(x, signal)
+ self.assertEqual(list(getAllReceivers(None,signal)), [])
+ self._testIsClean()
+
+ def testAnyRegistration(self):
+ a = Dummy()
+ signal = 'this'
+ connect(x, signal, Any)
+ expected = [(x,a)]
+ result = send('this',object(), a=a)
+ self.assertEqual(result, expected)
+ disconnect(x, signal, Any)
+ expected = []
+ result = send('this',object(), a=a)
+ self.assertEqual(result, expected)
+ self.assertEqual(list(getAllReceivers(Any,signal)), [])
+
+ self._testIsClean()
+
+ def testAnyRegistration2(self):
+ a = Dummy()
+ signal = 'this'
+ connect(x, Any, a)
+ expected = [(x,a)]
+ result = send('this',a, a=a)
+ self.assertEqual(result, expected)
+ disconnect(x, Any, a)
+ self.assertEqual(list(getAllReceivers(a,Any)), [])
+ self._testIsClean()
+
+ def testGarbageCollected(self):
+ a = Callable()
+ b = Dummy()
+ signal = 'this'
+ connect(a.a, signal, b)
+ expected = []
+ del a
+ result = send('this',b, a=b)
+ self.assertEqual(result, expected)
+ self.assertEqual(list(getAllReceivers(b,signal)), [])
+ self._testIsClean()
+
+ def testGarbageCollectedObj(self):
+ class x:
+ def __call__(self, a):
+ return a
+ a = Callable()
+ b = Dummy()
+ signal = 'this'
+ connect(a, signal, b)
+ expected = []
+ del a
+ result = send('this',b, a=b)
+ self.assertEqual(result, expected)
+ self.assertEqual(list(getAllReceivers(b,signal)), [])
+ self._testIsClean()
+
+
+ def testMultipleRegistration(self):
+ a = Callable()
+ b = Dummy()
+ signal = 'this'
+ connect(a, signal, b)
+ connect(a, signal, b)
+ connect(a, signal, b)
+ connect(a, signal, b)
+ connect(a, signal, b)
+ connect(a, signal, b)
+ result = send('this',b, a=b)
+ self.assertEqual(len(result), 1)
+ self.assertEqual(len(list(getAllReceivers(b,signal))), 1)
+ del a
+ del b
+ del result
+ self._testIsClean()
+
+ def testRobust(self):
+ """Test the sendRobust function"""
+ def fails():
+ raise ValueError('this')
+ a = object()
+ signal = 'this'
+ connect(fails, Any, a)
+ result = robust.sendRobust('this',a, a=a)
+ err = result[0][1]
+ self.assert_(isinstance(err, ValueError))
+ self.assertEqual(err.args, ('this',))
+
+def getSuite():
+ return unittest.makeSuite(DispatcherTests,'test')
+
+if __name__ == "__main__":
+ unittest.main ()
diff --git a/tests/regressiontests/dispatch/tests/test_robustapply.py b/tests/regressiontests/dispatch/tests/test_robustapply.py
new file mode 100644
index 0000000000..499450eec4
--- /dev/null
+++ b/tests/regressiontests/dispatch/tests/test_robustapply.py
@@ -0,0 +1,34 @@
+from django.dispatch.robustapply import *
+
+import unittest
+
+def noArgument():
+ pass
+
+def oneArgument(blah):
+ pass
+
+def twoArgument(blah, other):
+ pass
+
+class TestCases(unittest.TestCase):
+ def test01(self):
+ robustApply(noArgument)
+
+ def test02(self):
+ self.assertRaises(TypeError, robustApply, noArgument, "this")
+
+ def test03(self):
+ self.assertRaises(TypeError, robustApply, oneArgument)
+
+ def test04(self):
+ """Raise error on duplication of a particular argument"""
+ self.assertRaises(TypeError, robustApply, oneArgument, "this", blah = "that")
+
+def getSuite():
+ return unittest.makeSuite(TestCases,'test')
+
+
+if __name__ == "__main__":
+ unittest.main()
+
diff --git a/tests/regressiontests/dispatch/tests/test_saferef.py b/tests/regressiontests/dispatch/tests/test_saferef.py
new file mode 100644
index 0000000000..233a2023e0
--- /dev/null
+++ b/tests/regressiontests/dispatch/tests/test_saferef.py
@@ -0,0 +1,77 @@
+from django.dispatch.saferef import *
+
+import unittest
+
+class Test1(object):
+ def x(self):
+ pass
+
+def test2(obj):
+ pass
+
+class Test2(object):
+ def __call__(self, obj):
+ pass
+
+class Tester(unittest.TestCase):
+ def setUp(self):
+ ts = []
+ ss = []
+ for x in xrange(5000):
+ t = Test1()
+ ts.append(t)
+ s = safeRef(t.x, self._closure)
+ ss.append(s)
+ ts.append(test2)
+ ss.append(safeRef(test2, self._closure))
+ for x in xrange(30):
+ t = Test2()
+ ts.append(t)
+ s = safeRef(t, self._closure)
+ ss.append(s)
+ self.ts = ts
+ self.ss = ss
+ self.closureCount = 0
+
+ def tearDown(self):
+ del self.ts
+ del self.ss
+
+ def testIn(self):
+ """Test the "in" operator for safe references (cmp)"""
+ for t in self.ts[:50]:
+ self.assert_(safeRef(t.x) in self.ss)
+
+ def testValid(self):
+ """Test that the references are valid (return instance methods)"""
+ for s in self.ss:
+ self.assert_(s())
+
+ def testShortCircuit (self):
+ """Test that creation short-circuits to reuse existing references"""
+ sd = {}
+ for s in self.ss:
+ sd[s] = 1
+ for t in self.ts:
+ if hasattr(t, 'x'):
+ self.assert_(sd.has_key(safeRef(t.x)))
+ else:
+ self.assert_(sd.has_key(safeRef(t)))
+
+ def testRepresentation (self):
+ """Test that the reference object's representation works
+
+ XXX Doesn't currently check the results, just that no error
+ is raised
+ """
+ repr(self.ss[-1])
+
+ def _closure(self, ref):
+ """Dumb utility mechanism to increment deletion counter"""
+ self.closureCount +=1
+
+def getSuite():
+ return unittest.makeSuite(Tester,'test')
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/tests/regressiontests/forms/tests.py b/tests/regressiontests/forms/tests.py
index 20a1937f56..a9ce8d23b3 100644
--- a/tests/regressiontests/forms/tests.py
+++ b/tests/regressiontests/forms/tests.py
@@ -72,6 +72,22 @@ u'<input type="password" class="special" name="email" />'
>>> w.render('email', 'ŠĐĆŽćžšđ', attrs={'class': 'fun'})
u'<input type="password" class="fun" value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" name="email" />'
+The render_value argument lets you specify whether the widget should render
+its value. You may want to do this for security reasons.
+>>> w = PasswordInput(render_value=True)
+>>> w.render('email', 'secret')
+u'<input type="password" name="email" value="secret" />'
+>>> w = PasswordInput(render_value=False)
+>>> w.render('email', '')
+u'<input type="password" name="email" />'
+>>> w.render('email', None)
+u'<input type="password" name="email" />'
+>>> w.render('email', 'secret')
+u'<input type="password" name="email" />'
+>>> w = PasswordInput(attrs={'class': 'fun'}, render_value=False)
+>>> w.render('email', 'secret')
+u'<input type="password" class="fun" name="email" />'
+
# HiddenInput Widget ############################################################
>>> w = HiddenInput()
@@ -302,6 +318,7 @@ The value is compared to its str():
</select>
The 'choices' argument can be any iterable:
+>>> from itertools import chain
>>> def get_choices():
... for i in range(5):
... yield (i, i)
@@ -313,6 +330,17 @@ The 'choices' argument can be any iterable:
<option value="3">3</option>
<option value="4">4</option>
</select>
+>>> things = ({'id': 1, 'name': 'And Boom'}, {'id': 2, 'name': 'One More Thing!'})
+>>> class SomeForm(Form):
+... somechoice = ChoiceField(choices=chain((('', '-'*9),), [(thing['id'], thing['name']) for thing in things]))
+>>> f = SomeForm()
+>>> f.as_table()
+u'<tr><th><label for="id_somechoice">Somechoice:</label></th><td><select name="somechoice" id="id_somechoice">\n<option value="" selected="selected">---------</option>\n<option value="1">And Boom</option>\n<option value="2">One More Thing!</option>\n</select></td></tr>'
+>>> f.as_table()
+u'<tr><th><label for="id_somechoice">Somechoice:</label></th><td><select name="somechoice" id="id_somechoice">\n<option value="" selected="selected">---------</option>\n<option value="1">And Boom</option>\n<option value="2">One More Thing!</option>\n</select></td></tr>'
+>>> f = SomeForm({'somechoice': 2})
+>>> f.as_table()
+u'<tr><th><label for="id_somechoice">Somechoice:</label></th><td><select name="somechoice" id="id_somechoice">\n<option value="">---------</option>\n<option value="1">And Boom</option>\n<option value="2" selected="selected">One More Thing!</option>\n</select></td></tr>'
You can also pass 'choices' to the constructor:
>>> w = Select(choices=[(1, 1), (2, 2), (3, 3)])
@@ -1493,7 +1521,7 @@ u'1'
>>> f.clean('3')
Traceback (most recent call last):
...
-ValidationError: [u'Select a valid choice. 3 is not one of the available choices.']
+ValidationError: [u'Select a valid choice. That choice is not one of the available choices.']
>>> f = ChoiceField(choices=[('1', '1'), ('2', '2')], required=False)
>>> f.clean('')
@@ -1507,7 +1535,7 @@ u'1'
>>> f.clean('3')
Traceback (most recent call last):
...
-ValidationError: [u'Select a valid choice. 3 is not one of the available choices.']
+ValidationError: [u'Select a valid choice. That choice is not one of the available choices.']
>>> f = ChoiceField(choices=[('J', 'John'), ('P', 'Paul')])
>>> f.clean('J')
@@ -1515,7 +1543,7 @@ u'J'
>>> f.clean('John')
Traceback (most recent call last):
...
-ValidationError: [u'Select a valid choice. John is not one of the available choices.']
+ValidationError: [u'Select a valid choice. That choice is not one of the available choices.']
# NullBooleanField ############################################################
@@ -1983,6 +2011,19 @@ For a form with a <select>, use ChoiceField:
<option value="J">Java</option>
</select>
+A subtlety: If one of the choices' value is the empty string and the form is
+unbound, then the <option> for the empty-string choice will get selected="selected".
+>>> class FrameworkForm(Form):
+... name = CharField()
+... language = ChoiceField(choices=[('', '------'), ('P', 'Python'), ('J', 'Java')])
+>>> f = FrameworkForm(auto_id=False)
+>>> print f['language']
+<select name="language">
+<option value="" selected="selected">------</option>
+<option value="P">Python</option>
+<option value="J">Java</option>
+</select>
+
You can specify widget attributes in the Widget constructor.
>>> class FrameworkForm(Form):
... name = CharField()
@@ -2201,6 +2242,19 @@ returns a list of input.
>>> f.clean_data
{'composers': [u'J', u'P'], 'name': u'Yesterday'}
+Validation errors are HTML-escaped when output as HTML.
+>>> class EscapingForm(Form):
+... special_name = CharField()
+... def clean_special_name(self):
+... raise ValidationError("Something's wrong with '%s'" % self.clean_data['special_name'])
+
+>>> f = EscapingForm({'special_name': "Nothing to escape"}, auto_id=False)
+>>> print f
+<tr><th>Special name:</th><td><ul class="errorlist"><li>Something&#39;s wrong with &#39;Nothing to escape&#39;</li></ul><input type="text" name="special_name" value="Nothing to escape" /></td></tr>
+>>> f = EscapingForm({'special_name': "Should escape < & > and <script>alert('xss')</script>"}, auto_id=False)
+>>> print f
+<tr><th>Special name:</th><td><ul class="errorlist"><li>Something&#39;s wrong with &#39;Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#39;xss&#39;)&lt;/script&gt;&#39;</li></ul><input type="text" name="special_name" value="Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#39;xss&#39;)&lt;/script&gt;" /></td></tr>
+
# Validating multiple fields in relation to another ###########################
There are a couple of ways to do multiple-field validation. If you want the
@@ -2334,6 +2388,43 @@ the next.
<tr><th>Field3:</th><td><input type="text" name="field3" /></td></tr>
<tr><th>Field4:</th><td><input type="text" name="field4" /></td></tr>
+Similarly, changes to field attributes do not persist from one Form instance
+to the next.
+>>> class Person(Form):
+... first_name = CharField(required=False)
+... last_name = CharField(required=False)
+... def __init__(self, names_required=False, *args, **kwargs):
+... super(Person, self).__init__(*args, **kwargs)
+... if names_required:
+... self.fields['first_name'].required = True
+... self.fields['last_name'].required = True
+>>> f = Person(names_required=False)
+>>> f['first_name'].field.required, f['last_name'].field.required
+(False, False)
+>>> f = Person(names_required=True)
+>>> f['first_name'].field.required, f['last_name'].field.required
+(True, True)
+>>> f = Person(names_required=False)
+>>> f['first_name'].field.required, f['last_name'].field.required
+(False, False)
+>>> class Person(Form):
+... first_name = CharField(max_length=30)
+... last_name = CharField(max_length=30)
+... def __init__(self, name_max_length=None, *args, **kwargs):
+... super(Person, self).__init__(*args, **kwargs)
+... if name_max_length:
+... self.fields['first_name'].max_length = name_max_length
+... self.fields['last_name'].max_length = name_max_length
+>>> f = Person(name_max_length=None)
+>>> f['first_name'].field.max_length, f['last_name'].field.max_length
+(30, 30)
+>>> f = Person(name_max_length=20)
+>>> f['first_name'].field.max_length, f['last_name'].field.max_length
+(20, 20)
+>>> f = Person(name_max_length=None)
+>>> f['first_name'].field.max_length, f['last_name'].field.max_length
+(30, 30)
+
HiddenInput widgets are displayed differently in the as_table(), as_ul()
and as_p() output of a Form -- their verbose names are not displayed, and a
separate row is not displayed. They're displayed in the last row of the
@@ -2645,6 +2736,54 @@ purposes, though.
<li>Username: <input type="text" name="username" maxlength="10" /> e.g., user@example.com</li>
<li>Password: <input type="password" name="password" /><input type="hidden" name="next" value="/" /></li>
+Help text can include arbitrary Unicode characters.
+>>> class UserRegistration(Form):
+... username = CharField(max_length=10, help_text='ŠĐĆŽćžšđ')
+>>> p = UserRegistration(auto_id=False)
+>>> p.as_ul()
+u'<li>Username: <input type="text" name="username" maxlength="10" /> \u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111</li>'
+
+# Subclassing forms ###########################################################
+
+You can subclass a Form to add fields. The resulting form subclass will have
+all of the fields of the parent Form, plus whichever fields you define in the
+subclass.
+>>> class Person(Form):
+... first_name = CharField()
+... last_name = CharField()
+... birthday = DateField()
+>>> class Musician(Person):
+... instrument = CharField()
+>>> p = Person(auto_id=False)
+>>> print p.as_ul()
+<li>First name: <input type="text" name="first_name" /></li>
+<li>Last name: <input type="text" name="last_name" /></li>
+<li>Birthday: <input type="text" name="birthday" /></li>
+>>> m = Musician(auto_id=False)
+>>> print m.as_ul()
+<li>First name: <input type="text" name="first_name" /></li>
+<li>Last name: <input type="text" name="last_name" /></li>
+<li>Birthday: <input type="text" name="birthday" /></li>
+<li>Instrument: <input type="text" name="instrument" /></li>
+
+Yes, you can subclass multiple forms. The fields are added in the order in
+which the parent classes are listed.
+>>> class Person(Form):
+... first_name = CharField()
+... last_name = CharField()
+... birthday = DateField()
+>>> class Instrument(Form):
+... instrument = CharField()
+>>> class Beatle(Person, Instrument):
+... haircut_type = CharField()
+>>> b = Beatle(auto_id=False)
+>>> print b.as_ul()
+<li>First name: <input type="text" name="first_name" /></li>
+<li>Last name: <input type="text" name="last_name" /></li>
+<li>Birthday: <input type="text" name="birthday" /></li>
+<li>Instrument: <input type="text" name="instrument" /></li>
+<li>Haircut type: <input type="text" name="haircut_type" /></li>
+
# Forms with prefixes #########################################################
Sometimes it's necessary to have multiple forms display on the same HTML page,
@@ -2858,7 +2997,7 @@ VALID: {'username': u'adrian', 'password1': u'secret', 'password2': u'secret'}
# Some ideas for using templates with forms ###################################
>>> class UserRegistration(Form):
-... username = CharField(max_length=10)
+... username = CharField(max_length=10, help_text="Good luck picking a username that doesn't already exist.")
... password1 = CharField(widget=PasswordInput)
... password2 = CharField(widget=PasswordInput)
... def clean(self):
@@ -2935,6 +3074,24 @@ field an "id" attribute.
<input type="submit" />
</form>
+User form.[field].help_text to output a field's help text. If the given field
+does not have help text, nothing will be output.
+>>> t = Template('''<form action="">
+... <p>{{ form.username.label_tag }}: {{ form.username }}<br />{{ form.username.help_text }}</p>
+... <p>{{ form.password1.label_tag }}: {{ form.password1 }}</p>
+... <p>{{ form.password2.label_tag }}: {{ form.password2 }}</p>
+... <input type="submit" />
+... </form>''')
+>>> print t.render(Context({'form': UserRegistration(auto_id=False)}))
+<form action="">
+<p>Username: <input type="text" name="username" maxlength="10" /><br />Good luck picking a username that doesn't already exist.</p>
+<p>Password1: <input type="password" name="password1" /></p>
+<p>Password2: <input type="password" name="password2" /></p>
+<input type="submit" />
+</form>
+>>> Template('{{ form.password1.help_text }}').render(Context({'form': UserRegistration(auto_id=False)}))
+''
+
The label_tag() method takes an optional attrs argument: a dictionary of HTML
attributes to add to the <label> tag.
>>> f = UserRegistration(auto_id='id_%s')
@@ -2977,12 +3134,12 @@ the list of errors is empty). You can also use it in {% if %} statements.
<input type="submit" />
</form>
-#################
-# Extra widgets #
-#################
+###############
+# Extra stuff #
+###############
-The newforms library comes with some extra, higher-level Widget classes that
-demonstrate some of the library's abilities.
+The newforms library comes with some extra, higher-level Field and Widget
+classes that demonstrate some of the library's abilities.
# SelectDateWidget ############################################################
@@ -3111,6 +3268,316 @@ True
<option value="2016">2016</option>
</select>
+# USZipCodeField ##############################################################
+
+USZipCodeField validates that the data is either a five-digit U.S. zip code or
+a zip+4.
+>>> from django.contrib.localflavor.usa.forms import USZipCodeField
+>>> f = USZipCodeField()
+>>> f.clean('60606')
+u'60606'
+>>> f.clean(60606)
+u'60606'
+>>> f.clean('04000')
+u'04000'
+>>> f.clean('4000')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a zip code in the format XXXXX or XXXXX-XXXX.']
+>>> f.clean('60606-1234')
+u'60606-1234'
+>>> f.clean('6060-1234')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a zip code in the format XXXXX or XXXXX-XXXX.']
+>>> f.clean('60606-')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a zip code in the format XXXXX or XXXXX-XXXX.']
+>>> f.clean(None)
+Traceback (most recent call last):
+...
+ValidationError: [u'This field is required.']
+>>> f.clean('')
+Traceback (most recent call last):
+...
+ValidationError: [u'This field is required.']
+
+>>> f = USZipCodeField(required=False)
+>>> f.clean('60606')
+u'60606'
+>>> f.clean(60606)
+u'60606'
+>>> f.clean('04000')
+u'04000'
+>>> f.clean('4000')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a zip code in the format XXXXX or XXXXX-XXXX.']
+>>> f.clean('60606-1234')
+u'60606-1234'
+>>> f.clean('6060-1234')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a zip code in the format XXXXX or XXXXX-XXXX.']
+>>> f.clean('60606-')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a zip code in the format XXXXX or XXXXX-XXXX.']
+>>> f.clean(None)
+u''
+>>> f.clean('')
+u''
+
+# USPhoneNumberField ##########################################################
+
+USPhoneNumberField validates that the data is a valid U.S. phone number,
+including the area code. It's normalized to XXX-XXX-XXXX format.
+>>> from django.contrib.localflavor.usa.forms import USPhoneNumberField
+>>> f = USPhoneNumberField()
+>>> f.clean('312-555-1212')
+u'312-555-1212'
+>>> f.clean('3125551212')
+u'312-555-1212'
+>>> f.clean('312 555-1212')
+u'312-555-1212'
+>>> f.clean('(312) 555-1212')
+u'312-555-1212'
+>>> f.clean('312 555 1212')
+u'312-555-1212'
+>>> f.clean('312.555.1212')
+u'312-555-1212'
+>>> f.clean('312.555-1212')
+u'312-555-1212'
+>>> f.clean(' (312) 555.1212 ')
+u'312-555-1212'
+>>> f.clean('555-1212')
+Traceback (most recent call last):
+...
+ValidationError: [u'Phone numbers must be in XXX-XXX-XXXX format.']
+>>> f.clean('312-55-1212')
+Traceback (most recent call last):
+...
+ValidationError: [u'Phone numbers must be in XXX-XXX-XXXX format.']
+>>> f.clean(None)
+Traceback (most recent call last):
+...
+ValidationError: [u'This field is required.']
+>>> f.clean('')
+Traceback (most recent call last):
+...
+ValidationError: [u'This field is required.']
+
+>>> f = USPhoneNumberField(required=False)
+>>> f.clean('312-555-1212')
+u'312-555-1212'
+>>> f.clean('3125551212')
+u'312-555-1212'
+>>> f.clean('312 555-1212')
+u'312-555-1212'
+>>> f.clean('(312) 555-1212')
+u'312-555-1212'
+>>> f.clean('312 555 1212')
+u'312-555-1212'
+>>> f.clean('312.555.1212')
+u'312-555-1212'
+>>> f.clean('312.555-1212')
+u'312-555-1212'
+>>> f.clean(' (312) 555.1212 ')
+u'312-555-1212'
+>>> f.clean('555-1212')
+Traceback (most recent call last):
+...
+ValidationError: [u'Phone numbers must be in XXX-XXX-XXXX format.']
+>>> f.clean('312-55-1212')
+Traceback (most recent call last):
+...
+ValidationError: [u'Phone numbers must be in XXX-XXX-XXXX format.']
+>>> f.clean(None)
+u''
+>>> f.clean('')
+u''
+
+# USStateField ################################################################
+
+USStateField validates that the data is either an abbreviation or name of a
+U.S. state.
+>>> from django.contrib.localflavor.usa.forms import USStateField
+>>> f = USStateField()
+>>> f.clean('il')
+u'IL'
+>>> f.clean('IL')
+u'IL'
+>>> f.clean('illinois')
+u'IL'
+>>> f.clean(' illinois ')
+u'IL'
+>>> f.clean(60606)
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a U.S. state or territory.']
+>>> f.clean(None)
+Traceback (most recent call last):
+...
+ValidationError: [u'This field is required.']
+>>> f.clean('')
+Traceback (most recent call last):
+...
+ValidationError: [u'This field is required.']
+
+>>> f = USStateField(required=False)
+>>> f.clean('il')
+u'IL'
+>>> f.clean('IL')
+u'IL'
+>>> f.clean('illinois')
+u'IL'
+>>> f.clean(' illinois ')
+u'IL'
+>>> f.clean(60606)
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a U.S. state or territory.']
+>>> f.clean(None)
+u''
+>>> f.clean('')
+u''
+
+# USStateSelect ###############################################################
+
+USStateSelect is a Select widget that uses a list of U.S. states/territories
+as its choices.
+>>> from django.contrib.localflavor.usa.forms import USStateSelect
+>>> w = USStateSelect()
+>>> print w.render('state', 'IL')
+<select name="state">
+<option value="AL">Alabama</option>
+<option value="AK">Alaska</option>
+<option value="AS">American Samoa</option>
+<option value="AZ">Arizona</option>
+<option value="AR">Arkansas</option>
+<option value="CA">California</option>
+<option value="CO">Colorado</option>
+<option value="CT">Connecticut</option>
+<option value="DE">Deleware</option>
+<option value="DC">District of Columbia</option>
+<option value="FM">Federated States of Micronesia</option>
+<option value="FL">Florida</option>
+<option value="GA">Georgia</option>
+<option value="GU">Guam</option>
+<option value="HI">Hawaii</option>
+<option value="ID">Idaho</option>
+<option value="IL" selected="selected">Illinois</option>
+<option value="IN">Indiana</option>
+<option value="IA">Iowa</option>
+<option value="KS">Kansas</option>
+<option value="KY">Kentucky</option>
+<option value="LA">Louisiana</option>
+<option value="ME">Maine</option>
+<option value="MH">Marshall Islands</option>
+<option value="MD">Maryland</option>
+<option value="MA">Massachusetts</option>
+<option value="MI">Michigan</option>
+<option value="MN">Minnesota</option>
+<option value="MS">Mississippi</option>
+<option value="MO">Missouri</option>
+<option value="MT">Montana</option>
+<option value="NE">Nebraska</option>
+<option value="NV">Nevada</option>
+<option value="NH">New Hampshire</option>
+<option value="NJ">New Jersey</option>
+<option value="NM">New Mexico</option>
+<option value="NY">New York</option>
+<option value="NC">North Carolina</option>
+<option value="ND">North Dakota</option>
+<option value="MP">Northern Mariana Islands</option>
+<option value="OH">Ohio</option>
+<option value="OK">Oklahoma</option>
+<option value="OR">Oregon</option>
+<option value="PW">Palau</option>
+<option value="PA">Pennsylvania</option>
+<option value="PR">Puerto Rico</option>
+<option value="RI">Rhode Island</option>
+<option value="SC">South Carolina</option>
+<option value="SD">South Dakota</option>
+<option value="TN">Tennessee</option>
+<option value="TX">Texas</option>
+<option value="UT">Utah</option>
+<option value="VT">Vermont</option>
+<option value="VI">Virgin Islands</option>
+<option value="VA">Virginia</option>
+<option value="WA">Washington</option>
+<option value="WV">West Virginia</option>
+<option value="WI">Wisconsin</option>
+<option value="WY">Wyoming</option>
+</select>
+
+# UKPostcodeField #############################################################
+
+UKPostcodeField validates that the data is a valid UK postcode.
+>>> from django.contrib.localflavor.uk.forms import UKPostcodeField
+>>> f = UKPostcodeField()
+>>> f.clean('BT32 4PX')
+u'BT32 4PX'
+>>> f.clean('GIR 0AA')
+u'GIR 0AA'
+>>> f.clean('BT324PX')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a postcode. A space is required between the two postcode parts.']
+>>> f.clean('1NV 4L1D')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a postcode. A space is required between the two postcode parts.']
+>>> f.clean(None)
+Traceback (most recent call last):
+...
+ValidationError: [u'This field is required.']
+>>> f.clean('')
+Traceback (most recent call last):
+...
+ValidationError: [u'This field is required.']
+
+>>> f = UKPostcodeField(required=False)
+>>> f.clean('BT32 4PX')
+u'BT32 4PX'
+>>> f.clean('GIR 0AA')
+u'GIR 0AA'
+>>> f.clean('1NV 4L1D')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a postcode. A space is required between the two postcode parts.']
+>>> f.clean('BT324PX')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a postcode. A space is required between the two postcode parts.']
+>>> f.clean(None)
+u''
+>>> f.clean('')
+u''
+
+#################################
+# Tests of underlying functions #
+#################################
+
+# smart_unicode tests
+>>> from django.newforms.util import smart_unicode
+>>> class Test:
+... def __str__(self):
+... return 'ŠĐĆŽćžšđ'
+>>> class TestU:
+... def __str__(self):
+... return 'Foo'
+... def __unicode__(self):
+... return u'\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111'
+>>> smart_unicode(Test())
+u'\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111'
+>>> smart_unicode(TestU())
+u'\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111'
+>>> smart_unicode(1)
+u'1'
+>>> smart_unicode('foo')
+u'foo'
"""
if __name__ == "__main__":
diff --git a/tests/regressiontests/humanize/__init__.py b/tests/regressiontests/humanize/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/regressiontests/humanize/__init__.py
diff --git a/tests/regressiontests/humanize/models.py b/tests/regressiontests/humanize/models.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/regressiontests/humanize/models.py
diff --git a/tests/regressiontests/humanize/tests.py b/tests/regressiontests/humanize/tests.py
new file mode 100644
index 0000000000..e342d7ded8
--- /dev/null
+++ b/tests/regressiontests/humanize/tests.py
@@ -0,0 +1,52 @@
+import unittest
+from django.template import Template, Context, add_to_builtins
+
+add_to_builtins('django.contrib.humanize.templatetags.humanize')
+
+class HumanizeTests(unittest.TestCase):
+
+ def humanize_tester(self, test_list, result_list, method):
+ # Using max below ensures we go through both lists
+ # However, if the lists are not equal length, this raises an exception
+ for index in xrange(len(max(test_list,result_list))):
+ test_content = test_list[index]
+ t = Template('{{ test_content|%s }}' % method)
+ rendered = t.render(Context(locals())).strip()
+ self.assertEqual(rendered, result_list[index],
+ msg="""%s test failed, produced %s,
+should've produced %s""" % (method, rendered, result_list[index]))
+
+ def test_ordinal(self):
+ test_list = ('1','2','3','4','11','12',
+ '13','101','102','103','111',
+ 'something else')
+ result_list = ('1st', '2nd', '3rd', '4th', '11th',
+ '12th', '13th', '101st', '102nd', '103rd',
+ '111th', 'something else')
+
+ self.humanize_tester(test_list, result_list, 'ordinal')
+
+ def test_intcomma(self):
+ test_list = ('100','1000','10123','10311','1000000')
+ result_list = ('100', '1,000', '10,123', '10,311', '1,000,000')
+
+ self.humanize_tester(test_list, result_list, 'intcomma')
+
+ def test_intword(self):
+ test_list = ('100', '1000000', '1200000', '1290000',
+ '1000000000','2000000000','6000000000000')
+ result_list = ('100', '1.0 million', '1.2 million', '1.3 million',
+ '1.0 billion', '2.0 billion', '6.0 trillion')
+
+ self.humanize_tester(test_list, result_list, 'intword')
+
+ def test_apnumber(self):
+ test_list = [str(x) for x in xrange(1,11)]
+ result_list = ('one', 'two', 'three', 'four', 'five', 'six',
+ 'seven', 'eight', 'nine', '10')
+
+ self.humanize_tester(test_list, result_list, 'apnumber')
+
+if __name__ == '__main__':
+ unittest.main()
+
diff --git a/tests/regressiontests/many_to_one_regress/models.py b/tests/regressiontests/many_to_one_regress/models.py
index 6c067446b1..8ddec98da4 100644
--- a/tests/regressiontests/many_to_one_regress/models.py
+++ b/tests/regressiontests/many_to_one_regress/models.py
@@ -1,13 +1,34 @@
from django.db import models
+# If ticket #1578 ever slips back in, these models will not be able to be
+# created (the field names being lower-cased versions of their opposite
+# classes is important here).
+
class First(models.Model):
second = models.IntegerField()
class Second(models.Model):
first = models.ForeignKey(First, related_name = 'the_first')
-# If ticket #1578 ever slips back in, these models will not be able to be
-# created (the field names being lower-cased versions of their opposite
-# classes is important here).
+# Protect against repetition of #1839, #2415 and #2536.
+class Third(models.Model):
+ name = models.CharField(maxlength=20)
+ third = models.ForeignKey('self', null=True, related_name='child_set')
+
+class Parent(models.Model):
+ name = models.CharField(maxlength=20)
+ bestchild = models.ForeignKey('Child', null=True, related_name='favored_by')
+
+class Child(models.Model):
+ name = models.CharField(maxlength=20)
+ parent = models.ForeignKey(Parent)
+
-__test__ = {'API_TESTS':""}
+__test__ = {'API_TESTS':"""
+>>> Third.AddManipulator().save(dict(id='3', name='An example', another=None))
+<Third: Third object>
+>>> parent = Parent(name = 'fred')
+>>> parent.save()
+>>> Child.AddManipulator().save(dict(name='bam-bam', parent=parent.id))
+<Child: Child object>
+"""}
diff --git a/tests/regressiontests/templates/tests.py b/tests/regressiontests/templates/tests.py
index 0a41f5b5b7..375fd36196 100644
--- a/tests/regressiontests/templates/tests.py
+++ b/tests/regressiontests/templates/tests.py
@@ -127,6 +127,29 @@ class Templates(unittest.TestCase):
# Fail silently when accessing a non-simple method
'basic-syntax20': ("{{ var.method2 }}", {"var": SomeClass()}, ("","INVALID")),
+ # 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"),
+
+ # Fail silently when the list index is out of range.
+ 'list-index02': ("{{ var.5 }}", {"var": ["first item", "second item"]}, ("", "INVALID")),
+
+ # Fail silently when the variable is not a subscriptable object.
+ 'list-index03': ("{{ var.1 }}", {"var": None}, ("", "INVALID")),
+
+ # Fail silently when variable is a dict without the specified key.
+ 'list-index04': ("{{ var.1 }}", {"var": {}}, ("", "INVALID")),
+
+ # Dictionary lookup wins out when dict's key is a string.
+ 'list-index05': ("{{ var.1 }}", {"var": {'1': "hello"}}, "hello"),
+
+ # But list-index lookup wins out when dict's key is an int, which
+ # behind the scenes is really a dictionary lookup (for a dict)
+ # after converting the key to an int.
+ 'list-index06': ("{{ var.1 }}", {"var": {1: "hello"}}, "hello"),
+
+ # Dictionary lookup wins out when there is a string and int version of the key.
+ '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!"),
@@ -167,7 +190,7 @@ class Templates(unittest.TestCase):
'basic-syntax33': (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 propogates
+ # the exception propagates
'basic-syntax34': (r'1{{ var.method4 }}2', {"var": SomeClass()}, SomeOtherException),
# Escaped backslash in argument
@@ -378,6 +401,20 @@ class Templates(unittest.TestCase):
'ifequal-split09': (r"{% ifequal a 'slash\man' %}yes{% else %}no{% endifequal %}", {'a': r"slash\man"}, "yes"),
'ifequal-split10': (r"{% ifequal a 'slash\man' %}yes{% else %}no{% endifequal %}", {'a': r"slashman"}, "no"),
+ # NUMERIC RESOLUTION
+ 'ifequal-numeric01': ('{% ifequal x 5 %}yes{% endifequal %}', {'x': '5'}, ''),
+ 'ifequal-numeric02': ('{% ifequal x 5 %}yes{% endifequal %}', {'x': 5}, 'yes'),
+ 'ifequal-numeric03': ('{% ifequal x 5.2 %}yes{% endifequal %}', {'x': 5}, ''),
+ 'ifequal-numeric04': ('{% ifequal x 5.2 %}yes{% endifequal %}', {'x': 5.2}, 'yes'),
+ 'ifequal-numeric05': ('{% ifequal x 0.2 %}yes{% endifequal %}', {'x': .2}, 'yes'),
+ 'ifequal-numeric06': ('{% ifequal x .2 %}yes{% endifequal %}', {'x': .2}, 'yes'),
+ 'ifequal-numeric07': ('{% ifequal x 2. %}yes{% endifequal %}', {'x': 2}, ''),
+ 'ifequal-numeric08': ('{% ifequal x "5" %}yes{% endifequal %}', {'x': 5}, ''),
+ 'ifequal-numeric09': ('{% ifequal x "5" %}yes{% endifequal %}', {'x': '5'}, 'yes'),
+ 'ifequal-numeric10': ('{% ifequal x -5 %}yes{% endifequal %}', {'x': -5}, 'yes'),
+ 'ifequal-numeric11': ('{% ifequal x -5.2 %}yes{% endifequal %}', {'x': -5.2}, 'yes'),
+ 'ifequal-numeric12': ('{% ifequal x +5 %}yes{% endifequal %}', {'x': 5}, 'yes'),
+
### IFNOTEQUAL TAG ########################################################
'ifnotequal01': ("{% ifnotequal a b %}yes{% endifnotequal %}", {"a": 1, "b": 2}, "yes"),
'ifnotequal02': ("{% ifnotequal a b %}yes{% endifnotequal %}", {"a": 1, "b": 1}, ""),
@@ -390,6 +427,21 @@ class Templates(unittest.TestCase):
'include03': ('{% include template_name %}', {'template_name': 'basic-syntax02', 'headline': 'Included'}, "Included"),
'include04': ('a{% include "nonexistent" %}b', {}, "ab"),
+ ### NAMED ENDBLOCKS #######################################################
+
+ # Basic test
+ 'namedendblocks01': ("1{% block first %}_{% block second %}2{% endblock second %}_{% endblock first %}3", {}, '1_2_3'),
+
+ # Unbalanced blocks
+ 'namedendblocks02': ("1{% block first %}_{% block second %}2{% endblock first %}_{% endblock second %}3", {}, template.TemplateSyntaxError),
+ 'namedendblocks03': ("1{% block first %}_{% block second %}2{% endblock %}_{% endblock second %}3", {}, template.TemplateSyntaxError),
+ 'namedendblocks04': ("1{% block first %}_{% block second %}2{% endblock second %}_{% endblock third %}3", {}, template.TemplateSyntaxError),
+ 'namedendblocks05': ("1{% block first %}_{% block second %}2{% endblock first %}", {}, template.TemplateSyntaxError),
+
+ # Mixed named and unnamed endblocks
+ 'namedendblocks06': ("1{% block first %}_{% block second %}2{% endblock %}_{% endblock first %}3", {}, '1_2_3'),
+ 'namedendblocks07': ("1{% block first %}_{% block second %}2{% endblock second %}_{% endblock %}3", {}, '1_2_3'),
+
### INHERITANCE ###########################################################
# Standard template with no inheritance
@@ -630,6 +682,17 @@ class Templates(unittest.TestCase):
# Compare to a given parameter
'timeuntil04' : ('{{ a|timeuntil:b }}', {'a':NOW - timedelta(days=1), 'b':NOW - timedelta(days=2)}, '1 day'),
'timeuntil05' : ('{{ a|timeuntil:b }}', {'a':NOW - timedelta(days=2), 'b':NOW - timedelta(days=2, minutes=1)}, '1 minute'),
+
+ ### 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/'),
+ 'url03' : ('{% url regressiontests.templates.views.index %}', {}, '/url_tag/'),
+
+ # Failures
+ 'url04' : ('{% url %}', {}, template.TemplateSyntaxError),
+ 'url05' : ('{% url no_such_view %}', {}, ''),
+ 'url06' : ('{% url regressiontests.templates.views.client no_such_param="value" %}', {}, ''),
}
# Register our custom template loader.
diff --git a/tests/regressiontests/templates/urls.py b/tests/regressiontests/templates/urls.py
new file mode 100644
index 0000000000..dc5b36b08b
--- /dev/null
+++ b/tests/regressiontests/templates/urls.py
@@ -0,0 +1,10 @@
+from django.conf.urls.defaults import *
+from regressiontests.templates import views
+
+urlpatterns = patterns('',
+
+ # Test urls for testing reverse lookups
+ (r'^$', views.index),
+ (r'^client/(\d+)/$', views.client),
+ (r'^client/(\d+)/(?P<action>[^/]+)/$', views.client_action),
+)
diff --git a/tests/regressiontests/templates/views.py b/tests/regressiontests/templates/views.py
new file mode 100644
index 0000000000..b68809944a
--- /dev/null
+++ b/tests/regressiontests/templates/views.py
@@ -0,0 +1,10 @@
+# Fake views for testing url reverse lookup
+
+def index(request):
+ pass
+
+def client(request, id):
+ pass
+
+def client_action(request, id, action):
+ pass
diff --git a/tests/runtests.py b/tests/runtests.py
index 20189c2d99..a111ef1436 100755
--- a/tests/runtests.py
+++ b/tests/runtests.py
@@ -77,13 +77,19 @@ def django_tests(verbosity, tests_to_run):
old_root_urlconf = settings.ROOT_URLCONF
old_template_dirs = settings.TEMPLATE_DIRS
old_use_i18n = settings.USE_I18N
+ old_middleware_classes = settings.MIDDLEWARE_CLASSES
- # Redirect some settings for the duration of these tests
+ # Redirect some settings for the duration of these tests.
settings.TEST_DATABASE_NAME = TEST_DATABASE_NAME
settings.INSTALLED_APPS = ALWAYS_INSTALLED_APPS
settings.ROOT_URLCONF = 'urls'
settings.TEMPLATE_DIRS = (os.path.join(os.path.dirname(__file__), TEST_TEMPLATE_DIR),)
settings.USE_I18N = True
+ settings.MIDDLEWARE_CLASSES = (
+ 'django.contrib.sessions.middleware.SessionMiddleware',
+ 'django.contrib.auth.middleware.AuthenticationMiddleware',
+ 'django.middleware.common.CommonMiddleware',
+ )
# Load all the ALWAYS_INSTALLED_APPS.
# (This import statement is intentionally delayed until after we
@@ -91,7 +97,7 @@ def django_tests(verbosity, tests_to_run):
from django.db.models.loading import get_apps, load_app
get_apps()
- # Load all the test model apps
+ # Load all the test model apps.
test_models = []
for model_dir, model_name in get_test_models():
model_label = '.'.join([model_dir, model_name])
@@ -109,7 +115,7 @@ def django_tests(verbosity, tests_to_run):
sys.stderr.write("Error while importing %s:" % model_name + ''.join(traceback.format_exception(*sys.exc_info())[1:]))
continue
- # Add tests for invalid models
+ # Add tests for invalid models.
extra_tests = []
for model_dir, model_name in get_invalid_models():
model_label = '.'.join([model_dir, model_name])
@@ -118,14 +124,17 @@ def django_tests(verbosity, tests_to_run):
# Run the test suite, including the extra validation tests.
from django.test.simple import run_tests
- run_tests(test_models, verbosity, extra_tests=extra_tests)
+ failures = run_tests(test_models, verbosity, extra_tests=extra_tests)
+ if failures:
+ sys.exit(failures)
- # Restore the old settings
+ # Restore the old settings.
settings.INSTALLED_APPS = old_installed_apps
settings.TESTS_DATABASE_NAME = old_test_database_name
settings.ROOT_URLCONF = old_root_urlconf
settings.TEMPLATE_DIRS = old_template_dirs
settings.USE_I18N = old_use_i18n
+ settings.MIDDLEWARE_CLASSES = old_middleware_classes
if __name__ == "__main__":
from optparse import OptionParser
@@ -139,5 +148,7 @@ if __name__ == "__main__":
options, args = parser.parse_args()
if options.settings:
os.environ['DJANGO_SETTINGS_MODULE'] = options.settings
-
+ elif "DJANGO_SETTINGS_MODULE" not in os.environ:
+ parser.error("DJANGO_SETTINGS_MODULE is not set in the environment. "
+ "Set it or use --settings.")
django_tests(int(options.verbosity), args)
diff --git a/tests/urls.py b/tests/urls.py
index 39d5aaee6b..9dcdca944e 100644
--- a/tests/urls.py
+++ b/tests/urls.py
@@ -6,5 +6,8 @@ urlpatterns = patterns('',
# Always provide the auth system login and logout views
(r'^accounts/login/$', 'django.contrib.auth.views.login', {'template_name': 'login.html'}),
- (r'^accounts/logout/$', 'django.contrib.auth.views.login'),
+ (r'^accounts/logout/$', 'django.contrib.auth.views.logout'),
+
+ # test urlconf for {% url %} template tag
+ (r'^url_tag/', include('regressiontests.templates.urls')),
)