diff --git a/AUTHORS b/AUTHORS index 52d4950e4e..905cccc7ed 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 , who originally created Django with @@ -42,129 +41,240 @@ And here is an inevitably incomplete list of MUCH-APPRECIATED CONTRIBUTORS -- people who have submitted patches, reported bugs, added translations, helped answer newbie questions, and generally made Django that much better: - adurdin@gmail.com - akaihola + alang@bright-green.com + Marty Alchin + Daniel Alves Barbosa de Oliveira Vaz + AgarFu Andreas + andy@jadedplanet.net + Fabrice Aneche ant9000@netwise.it David Ascher + david@kazserve.org Arthur + axiak@mit.edu Jiri Barton Ned Batchelder Shannon -jj Behrens + Esdras Beleza + Chris Bennett James Bennett + Ben Paul Bissex Simon Blanchard + Matt Boersma + boobsd@gmail.com Andrew Brehaut - andy@jadedplanet.net + brut.alll@gmail.com + Jonathan Buchanan + Ricardo Javier Cárdenes Medina Antonio Cavedoni C8E Chris Chamberlin Amit Chakradeo ChaosKCW + ivan.chelubeev@gmail.com + Bryan Chow + Michal Chruszcz Ian Clelland crankycoder@gmail.com + Pete Crosier Matt Croydon + flavio.curella@gmail.com + Jure Cuhalev dackze+django@gmail.com + David Danier + Dirk Datzert Jonathan Daugherty (cygnus) + dave@thebarproject.com Jason Davies (Esaj) Alex Dedul deric@monowerks.com + Max Derkachev + Jordan Dimov dne@mayonnaise.net Maximillian Dornseif - dummy@habmalnefrage.de Jeremy Dunck + Andrew Durdin Andy Dustman Clint Ecker + enlight Enrico + A. Murat Eren + Ludvig Ericson + Dirk Eschler + Marc Fargas favo@exoweb.net + Bill Fenner + Stefane Fermgier + Afonso Fernández Nogueira + Matthew Flanagan + Eric Floehr + Jorge Gajon gandalf@owca.info + Marc Garcia Baishampayan Ghose + glin@seznam.cz martin.glueck@gmail.com + GomoX + Mario Gonzalez Simon Greenhill + Owen Griffiths Espen Grindhaug + Thomas Güttler + Brian Harring Brant Harris Hawkeye - heckj@mac.com + Joe Heck Joel Heenan hipertracker@gmail.com Ian Holsman Kieran Holland + Sung-Jin Hong + Richard House Robert Rock Howard Jason Huggins + Hyun Mi Ae + Tom Insam + Baurzhan Ismagulov jcrasta@gmail.com + Zak Johnson Michael Josephson jpellerin@gmail.com junzhang.jn@gmail.com + Antti Kaihola + Ben Dean Kawamura + Ian G. Kelly + Ben Khoo Garth Kidd kilian Sune Kirkeby + Bastian Kleineidam Cameron Knight (ckknight) + Nena Kojadin + Igor Kolar + Gasper Koren + Martin Kosír Meir Kriheli Bruce Kroeze + krzysiek.pawlik@silvermedia.pl Joseph Kocherhans konrad@gwu.edu + kurtiss@meetro.com lakin.wecker@gmail.com + Nick Lane Stuart Langridge + Nicola Larosa Eugene Lazutkin - Jeong-Min Lee + Jeong-Min Lee + Jannis Leidel Christopher Lenz lerouxb@gmail.com + Waylan Limberg limodou - mattmcc + Philip Lindborg + Matt McClanahan Martin Maney + masonsimon+django@gmail.com Manuzhai - Petar Marić + Petar Marić + Nuno Mariz + Marijn Vriens mark@junklight.com + Yasushi Masuda mattycakes@gmail.com Jason McBrayer mccutchen@gmail.com michael.mcewan@gmail.com + mikko@sorl.net + mitakummaa@gmail.com mmarshall + Andreas Mock + Reza Mohammadi Eric Moritz + mrmachine Robin Munn + Robert Myers Nebojša Dorđević + Gopal Narayanan Fraser Nevett Sam Newman Neal Norwitz oggie rob Jay Parlar + pavithran s + Barry Pederson + petr.marhoun@gmail.com pgross@thoughtworks.com phaedo phil@produxion.net + phil.h.smith@gmail.com Gustavo Picon Luke Plant plisk Daniel Poelzleithner + polpak@yahoo.com J. Rademaker Michael Radziej - ramiro + Ramiro Morales + Massimiliano Ravelli Brian Ray + remco@diji.biz rhettg@gmail.com + Henrique Romano + Armin Ronacher + Brian Rosner Oliver Rutherfurd Ivan Sagalaev (Maniac) + Vinay Sajip David Schein + scott@staplefish.com serbaut@gmail.com + John Shaffer Pete Shinners + Jozko Skrablin SmileyChris + smurf@smurf.noris.de sopel - Thomas Steinacher + Wiliam Alves de Souza + Georgi Stanojevski + Vasiliy Stavenko + Thomas Steinacher + nowell strite + Sundance Radek Švarz Swaroop C H Aaron Swartz + Ville Säävuori Tyson Tate + Frank Tegtmeyer + thebjorn + Zach Thompson + tibimicu@gmax.net Tom Tobin - Tom Insam Joe Topjian + torne-django@wolfpuppy.org.uk Karen Tracey + tstromberg@google.com + Makoto Tsuyuki + tt@gurgle.no Amit Upadhyay Geert Vanderkelen + viestards.lists@gmail.com + Vlado Milton Waddams + wam-djangobug@wamber.net + wangchun Dan Watson + Chris Wesseling + James Wheare + charly.wilhelm@gmail.com Rachel Willmer Gary Wilson wojtek ye7cakf02@sneakemail.com ymasuda@ethercube.com + Jarek Zgoda Cheng Zhang A big THANK YOU goes to: diff --git a/MANIFEST.in b/MANIFEST.in index b5fbb3cb90..06a6021a95 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,8 +1,15 @@ +include README include AUTHORS include INSTALL include LICENSE +include MANIFEST.in +recursive-include docs * +recursive-include scripts * +recursive-include examples * +recursive-include extras * 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/databrowse/templates * +recursive-include django/contrib/sitemaps/templates * diff --git a/django/__init__.py b/django/__init__.py index 5d5461c867..17d8c519cc 100644 --- a/django/__init__.py +++ b/django/__init__.py @@ -1 +1,8 @@ -VERSION = (0, 96, 'pre') +VERSION = (0, 97, 'pre') + +def get_version(): + "Returns the version as a human-format string." + v = '.'.join([str(i) for i in VERSION[:-1]]) + if VERSION[-1]: + v += '-' + VERSION[-1] + return v diff --git a/django/bin/compile-messages.py b/django/bin/compile-messages.py index 0137ec8dd4..2e1e908bbf 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'): @@ -27,10 +31,19 @@ def compile_messages(): os.environ['djangocompilemo'] = pf + '.mo' os.environ['djangocompilepo'] = pf + '.po' if sys.platform == 'win32': # Different shell-variable syntax - cmd = 'msgfmt -o "%djangocompilemo%" "%djangocompilepo%"' + cmd = 'msgfmt --check-format -o "%djangocompilemo%" "%djangocompilepo%"' else: - cmd = 'msgfmt -o "$djangocompilemo" "$djangocompilepo"' + cmd = 'msgfmt --check-format -o "$djangocompilemo" "$djangocompilepo"' os.system(cmd) +def main(): + parser = optparse.OptionParser() + parser.add_option('-l', '--locale', dest='locale', + help="The locale to process. Default is to process all.") + options, args = parser.parse_args() + if len(args): + parser.error("This program takes no arguments") + compile_messages(options.locale) + if __name__ == "__main__": - compile_messages() + main() diff --git a/django/bin/daily_cleanup.py b/django/bin/daily_cleanup.py index 667e0f16c6..c87be1e4c3 100644 --- a/django/bin/daily_cleanup.py +++ b/django/bin/daily_cleanup.py @@ -1,3 +1,5 @@ +#!/usr/bin/env python + """ Daily cleanup job. @@ -5,13 +7,13 @@ Can be run as a cronjob to clean out old data from the database (only expired sessions at the moment). """ -from django.db import backend, connection, transaction +import datetime +from django.db import transaction +from django.contrib.sessions.models import Session def clean_up(): - # Clean up old database records - cursor = connection.cursor() - cursor.execute("DELETE FROM %s WHERE %s < NOW()" % \ - (backend.quote_name('django_session'), backend.quote_name('expire_date'))) + """Clean up expired sessions.""" + Session.objects.filter(expire_date__lt=datetime.datetime.now()).delete() transaction.commit_unless_managed() if __name__ == "__main__": diff --git a/django/bin/make-messages.py b/django/bin/make-messages.py index 557cb5eeec..e824611ca3 100755 --- a/django/bin/make-messages.py +++ b/django/bin/make-messages.py @@ -9,6 +9,7 @@ import re import os import sys import getopt +from itertools import dropwhile pythonize_re = re.compile(r'\n\s*//') @@ -81,7 +82,7 @@ def make_messages(): src = pythonize_re.sub('\n#', src) open(os.path.join(dirpath, '%s.py' % file), "wb").write(src) thefile = '%s.py' % file - cmd = 'xgettext %s -d %s -L Perl --keyword=gettext_noop --keyword=gettext_lazy --keyword=ngettext_lazy -o - "%s"' % ( + cmd = 'xgettext %s -d %s -L Perl --keyword=gettext_noop --keyword=gettext_lazy --keyword=ngettext_lazy:1,2 --from-code UTF-8 -o - "%s"' % ( os.path.exists(potfile) and '--omit-header' or '', domain, os.path.join(dirpath, thefile)) (stdin, stdout, stderr) = os.popen3(cmd, 'b') msgs = stdout.read() @@ -103,8 +104,8 @@ def make_messages(): open(os.path.join(dirpath, '%s.py' % file), "wb").write(templatize(src)) thefile = '%s.py' % file if verbose: sys.stdout.write('processing file %s in %s\n' % (file, dirpath)) - cmd = 'xgettext %s -d %s -L Python --keyword=gettext_noop --keyword=gettext_lazy --keyword=ngettext_lazy -o - "%s"' % ( - os.path.exists(potfile) and '--omit-header' or '', domain, os.path.join(dirpath, thefile)) + cmd = 'xgettext -d %s -L Python --keyword=gettext_noop --keyword=gettext_lazy --keyword=ngettext_lazy:1,2 --keyword=ugettext_noop --keyword=ugettext_lazy --keyword=ungettext_lazy:1,2 --from-code UTF-8 -o - "%s"' % ( + domain, os.path.join(dirpath, thefile)) (stdin, stdout, stderr) = os.popen3(cmd, 'b') msgs = stdout.read() errors = stderr.read() @@ -116,13 +117,18 @@ def make_messages(): old = '#: '+os.path.join(dirpath, thefile)[2:] new = '#: '+os.path.join(dirpath, file)[2:] msgs = msgs.replace(old, new) + if os.path.exists(potfile): + # Strip the header + msgs = '\n'.join(dropwhile(len, msgs.split('\n'))) + else: + msgs = msgs.replace('charset=CHARSET', 'charset=UTF-8') if msgs: open(potfile, 'ab').write(msgs) if thefile != file: os.unlink(os.path.join(dirpath, thefile)) if os.path.exists(potfile): - (stdin, stdout, stderr) = os.popen3('msguniq "%s"' % potfile, 'b') + (stdin, stdout, stderr) = os.popen3('msguniq --to-code=utf-8 "%s"' % potfile, 'b') msgs = stdout.read() errors = stderr.read() if errors: diff --git a/django/bin/profiling/gather_profile_stats.py b/django/bin/profiling/gather_profile_stats.py index 852f16229d..c0844930e9 100644 --- a/django/bin/profiling/gather_profile_stats.py +++ b/django/bin/profiling/gather_profile_stats.py @@ -22,7 +22,7 @@ def gather_stats(p): else: continue print "Processing %s" % f - if profiles.has_key(path): + if path in profiles: profiles[path].add(prof) else: profiles[path] = prof diff --git a/django/conf/__init__.py b/django/conf/__init__.py index 1a04bbfb02..f28da2d764 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" @@ -36,6 +37,8 @@ class LazySettings(object): # __setattr__(), which would be an infinite loop. self.__dict__['_target'] = value else: + if self._target is None: + self._import_settings() setattr(self._target, name, value) def _import_settings(self): @@ -77,7 +80,7 @@ class Settings(object): self.SETTINGS_MODULE = settings_module try: - mod = __import__(self.SETTINGS_MODULE, '', '', ['']) + mod = __import__(self.SETTINGS_MODULE, {}, {}, ['']) except ImportError, e: raise EnvironmentError, "Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e) @@ -97,7 +100,7 @@ class Settings(object): new_installed_apps = [] for app in self.INSTALLED_APPS: if app.endswith('.*'): - appdir = os.path.dirname(__import__(app[:-2], '', '', ['']).__file__) + appdir = os.path.dirname(__import__(app[:-2], {}, {}, ['']).__file__) for d in os.listdir(appdir): if d.isalpha() and os.path.isdir(os.path.join(appdir, d)): new_installed_apps.append('%s.%s' % (app[:-2], d)) @@ -105,8 +108,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 69c775cdec..33f7aebb6b 100644 --- a/django/conf/global_settings.py +++ b/django/conf/global_settings.py @@ -25,12 +25,11 @@ ADMINS = () INTERNAL_IPS = () # Local time zone for this installation. All choices can be found here: -# http://www.postgresql.org/docs/current/static/datetime-keywords.html#DATETIME-TIMEZONE-SET-TABLE +# http://www.postgresql.org/docs/8.1/static/datetime-keywords.html#DATETIME-TIMEZONE-SET-TABLE TIME_ZONE = 'America/Chicago' # Language code for this installation. All choices can be found here: # http://www.w3.org/TR/REC-html40/struct/dirlang.html#langcodes -# http://blogs.law.harvard.edu/tech/stories/storyReader$15 LANGUAGE_CODE = 'en-us' # Languages we provide translations for, out of the box. The language name @@ -38,6 +37,8 @@ LANGUAGE_CODE = 'en-us' LANGUAGES = ( ('ar', gettext_noop('Arabic')), ('bn', gettext_noop('Bengali')), + ('bg', gettext_noop('Bulgarian')), + ('ca', gettext_noop('Catalan')), ('cs', gettext_noop('Czech')), ('cy', gettext_noop('Welsh')), ('da', gettext_noop('Danish')), @@ -46,6 +47,7 @@ LANGUAGES = ( ('en', gettext_noop('English')), ('es', gettext_noop('Spanish')), ('es_AR', gettext_noop('Argentinean Spanish')), + ('fa', gettext_noop('Persian')), ('fi', gettext_noop('Finnish')), ('fr', gettext_noop('French')), ('gl', gettext_noop('Galician')), @@ -54,9 +56,14 @@ LANGUAGES = ( ('is', gettext_noop('Icelandic')), ('it', gettext_noop('Italian')), ('ja', gettext_noop('Japanese')), + ('ko', gettext_noop('Korean')), + ('kn', gettext_noop('Kannada')), + ('lv', gettext_noop('Latvian')), + ('mk', gettext_noop('Macedonian')), ('nl', gettext_noop('Dutch')), ('no', gettext_noop('Norwegian')), ('pl', gettext_noop('Polish')), + ('pt', gettext_noop('Portugese')), ('pt-br', gettext_noop('Brazilian')), ('ro', gettext_noop('Romanian')), ('ru', gettext_noop('Russian')), @@ -65,6 +72,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')), @@ -88,6 +96,9 @@ MANAGERS = ADMINS DEFAULT_CONTENT_TYPE = 'text/html' DEFAULT_CHARSET = 'utf-8' +# Encoding of files read from disk (template and initial SQL files). +FILE_CHARSET = 'utf-8' + # E-mail address that error messages come from. SERVER_EMAIL = 'root@localhost' @@ -95,12 +106,13 @@ 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. DATABASE_HOST = '' # Set to empty string for localhost. Not used with sqlite3. DATABASE_PORT = '' # Set to empty string for default. Not used with sqlite3. +DATABASE_OPTIONS = {} # Set to empty dictionary for default. # Host for sending e-mail. EMAIL_HOST = 'localhost' @@ -111,6 +123,7 @@ EMAIL_PORT = 25 # Optional SMTP authentication information for EMAIL_HOST. EMAIL_HOST_USER = '' EMAIL_HOST_PASSWORD = '' +EMAIL_USE_TLS = False # List of strings representing installed apps. INSTALLED_APPS = () @@ -134,6 +147,7 @@ TEMPLATE_CONTEXT_PROCESSORS = ( 'django.core.context_processors.auth', 'django.core.context_processors.debug', 'django.core.context_processors.i18n', + 'django.core.context_processors.media', # 'django.core.context_processors.request', ) @@ -228,6 +242,11 @@ MONTH_DAY_FORMAT = 'F j' # Hint: you really don't! TRANSACTIONS_MANAGED = False +# The User-Agent string to use when checking for URL validity through the +# isExistingURL validator. +from django import get_version +URL_VALIDATOR_USER_AGENT = "Django/%s (http://www.djangoproject.com)" % get_version() + ############## # MIDDLEWARE # ############## @@ -263,6 +282,7 @@ SESSION_EXPIRE_AT_BROWSER_CLOSE = False # Whether sessions expire when a user # possible values. CACHE_BACKEND = 'simple://' CACHE_MIDDLEWARE_KEY_PREFIX = '' +CACHE_MIDDLEWARE_SECONDS = 600 #################### # COMMENTS # @@ -300,6 +320,12 @@ BANNED_IPS = () AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',) +LOGIN_URL = '/accounts/login/' + +LOGOUT_URL = '/accounts/logout/' + +LOGIN_REDIRECT_URL = '/accounts/profile/' + ########### # TESTING # ########### @@ -310,3 +336,17 @@ 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 + +# Strings used to set the character set and collation order for the test +# database. These values are passed literally to the server, so they are +# backend-dependent. If None, no special settings are sent (system defaults are +# used). +TEST_DATABASE_CHARSET = None +TEST_DATABASE_COLLATION = None + +############ +# FIXTURES # +############ + +# The list of directories to search for fixtures +FIXTURE_DIRS = () diff --git a/django/conf/locale/bg/LC_MESSAGES/django.mo b/django/conf/locale/bg/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..bfa09dcc23 Binary files /dev/null and b/django/conf/locale/bg/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/bg/LC_MESSAGES/django.po b/django/conf/locale/bg/LC_MESSAGES/django.po new file mode 100644 index 0000000000..9c1030685e --- /dev/null +++ b/django/conf/locale/bg/LC_MESSAGES/django.po @@ -0,0 +1,2670 @@ +# translation of django.po to Bulgarian +# +msgid "" +msgstr "" +"Project-Id-Version: django\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-04-05 01:32+1000\n" +"PO-Revision-Date: 2007-05-12 17:45+0300\n" +"Last-Translator: Jordan Dimov \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: db/models/manipulators.py:307 +#, python-format +msgid "%(object)s with this %(type)s already exists for the given %(field)s." +msgstr "%(object)s с този %(type)s вече съществува за зададеното %(field)s.s" + +#: db/models/manipulators.py:308 contrib/admin/views/main.py:335 +#: contrib/admin/views/main.py:337 contrib/admin/views/main.py:339 +msgid "and" +msgstr "и" + +#: db/models/fields/related.py:53 +#, python-format +msgid "Please enter a valid %s." +msgstr "Въведете валиден %s." + +#: db/models/fields/related.py:642 +msgid "Separate multiple IDs with commas." +msgstr "Множество ID-та се разделят с запетайки" + +#: db/models/fields/related.py:644 +msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "Задръжте натиснат клавиша \"Control\" (или \"Command\" на Mac-а) за да направите повече от един избор. " + +#: db/models/fields/related.py:691 +#, python-format +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "Въведете валидни %(self)s ID-та. Стойността %(value)r не е валидна." +msgstr[1] "" + +#: 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:117 db/models/fields/__init__.py:274 +#: db/models/fields/__init__.py:610 db/models/fields/__init__.py:621 +#: oldforms/__init__.py:357 newforms/fields.py:80 newforms/fields.py:376 +#: newforms/fields.py:452 newforms/fields.py:463 newforms/models.py:178 +msgid "This field is required." +msgstr "Това поле е задължително." + +#: db/models/fields/__init__.py:367 +msgid "This value must be an integer." +msgstr "Тази стойност трябва да бъде цяло число" + +#: db/models/fields/__init__.py:402 +msgid "This value must be either True or False." +msgstr "Тази стойност трябва да бъде True или False." + +#: db/models/fields/__init__.py:423 +msgid "This field cannot be null." +msgstr "Това поле не може да има празна стойност." + +#: db/models/fields/__init__.py:457 core/validators.py:148 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Въведете валидна дата в формат ГГГГ-ММ-ДД." + +#: db/models/fields/__init__.py:526 core/validators.py:157 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "Въведете валидна дата и час в формат ГГГГ-ММ-ДД ЧЧ:ММ." + +#: db/models/fields/__init__.py:630 +msgid "Enter a valid filename." +msgstr "Въведете валидно име на файл." + +#: db/models/fields/__init__.py:751 +msgid "This value must be either None, True or False." +msgstr "Тази стойност трябва да бъде None, True, или False." + +#: conf/global_settings.py:39 +msgid "Arabic" +msgstr "арабски" + +#: conf/global_settings.py:40 +msgid "Bengali" +msgstr "бенгалски" + +#: conf/global_settings.py:41 +msgid "Catalan" +msgstr "каталонски" + +#: conf/global_settings.py:42 +msgid "Czech" +msgstr "чешки" + +#: conf/global_settings.py:43 +msgid "Welsh" +msgstr "уелски" + +#: conf/global_settings.py:44 +msgid "Danish" +msgstr "датски" + +#: conf/global_settings.py:45 +msgid "German" +msgstr "немски" + +#: conf/global_settings.py:46 +msgid "Greek" +msgstr "гръцки" + +#: conf/global_settings.py:47 +msgid "English" +msgstr "английски" + +#: conf/global_settings.py:48 +msgid "Spanish" +msgstr "испански" + +#: conf/global_settings.py:49 +msgid "Argentinean Spanish" +msgstr "аржентински испански" + +#: conf/global_settings.py:50 +msgid "Finnish" +msgstr "финландски" + +#: conf/global_settings.py:51 +msgid "French" +msgstr "френски" + +#: conf/global_settings.py:52 +msgid "Galician" +msgstr "галицейски" + +#: conf/global_settings.py:53 +msgid "Hungarian" +msgstr "унгарски" + +#: conf/global_settings.py:54 +msgid "Hebrew" +msgstr "еврит" + +#: conf/global_settings.py:55 +msgid "Icelandic" +msgstr "исландски" + +#: conf/global_settings.py:56 +msgid "Italian" +msgstr "италиански" + +#: conf/global_settings.py:57 +msgid "Japanese" +msgstr "японски" + +#: conf/global_settings.py:58 +msgid "Kannada" +msgstr "каннада (индийски)" + +#: conf/global_settings.py:59 +msgid "Latvian" +msgstr "латвийски" + +#: conf/global_settings.py:60 +msgid "Macedonian" +msgstr "македонски" + +#: conf/global_settings.py:61 +msgid "Dutch" +msgstr "холандски" + +#: conf/global_settings.py:62 +msgid "Norwegian" +msgstr "норвежки" + +#: conf/global_settings.py:63 +msgid "Polish" +msgstr "полски" + +#: conf/global_settings.py:64 +msgid "Portugese" +msgstr "португалски" + +#: conf/global_settings.py:65 +msgid "Brazilian" +msgstr "бразилски" + +#: conf/global_settings.py:66 +msgid "Romanian" +msgstr "ромънски" + +#: conf/global_settings.py:67 +msgid "Russian" +msgstr "руски" + +#: conf/global_settings.py:68 +msgid "Slovak" +msgstr "словашки" + +#: conf/global_settings.py:69 +msgid "Slovenian" +msgstr "словенски" + +#: conf/global_settings.py:70 +msgid "Serbian" +msgstr "сръбски" + +#: conf/global_settings.py:71 +msgid "Swedish" +msgstr "шведски" + +#: conf/global_settings.py:72 +msgid "Tamil" +msgstr "тамил (индийски)" + +#: conf/global_settings.py:73 +msgid "Telugu" +msgstr "телугу (индийски)" + +#: conf/global_settings.py:74 +msgid "Turkish" +msgstr "турски" + +#: conf/global_settings.py:75 +msgid "Ukrainian" +msgstr "украински" + +#: conf/global_settings.py:76 +msgid "Simplified Chinese" +msgstr "китайски" + +#: conf/global_settings.py:77 +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/dateformat.py:40 +msgid "p.m." +msgstr "p.m." + +#: utils/dateformat.py:41 +msgid "a.m." +msgstr "a.m." + +#: utils/dateformat.py:46 +msgid "PM" +msgstr "PM" + +#: utils/dateformat.py:47 +msgid "AM" +msgstr "AM" + +#: utils/dateformat.py:95 +msgid "midnight" +msgstr "полунощ" + +#: utils/dateformat.py:97 +msgid "noon" +msgstr "обяд" + +#: utils/translation/trans_real.py:358 +msgid "DATE_FORMAT" +msgstr "j N, Y" + +#: utils/translation/trans_real.py:359 +msgid "DATETIME_FORMAT" +msgstr "j N, Y, P" + +#: utils/translation/trans_real.py:360 +msgid "TIME_FORMAT" +msgstr "P" + +#: utils/translation/trans_real.py:376 +msgid "YEAR_MONTH_FORMAT" +msgstr "F Y" + +#: utils/translation/trans_real.py:377 +msgid "MONTH_DAY_FORMAT" +msgstr "j F" + +#: oldforms/__init__.py:392 +#, python-format +msgid "Ensure your text is less than %s character." +msgid_plural "Ensure your text is less than %s characters." +msgstr[0] "Въведеният текст не трябва да надвишава %s символа." +msgstr[1] "" + +#: oldforms/__init__.py:397 +msgid "Line breaks are not allowed here." +msgstr "Тук не се допускат нови редове." + +#: oldforms/__init__.py:498 oldforms/__init__.py:571 oldforms/__init__.py:610 +#, python-format +msgid "Select a valid choice; '%(data)s' is not in %(choices)s." +msgstr "Направете валиден избор; '%(data)s' не е сред %(choices)s." + +#: oldforms/__init__.py:577 contrib/admin/filterspecs.py:150 +#: newforms/widgets.py:174 +msgid "Unknown" +msgstr "Неизвестно" + +#: oldforms/__init__.py:577 contrib/admin/filterspecs.py:143 +#: newforms/widgets.py:174 +msgid "Yes" +msgstr "Да" + +#: oldforms/__init__.py:577 contrib/admin/filterspecs.py:143 +#: newforms/widgets.py:174 +msgid "No" +msgstr "Не" + +#: oldforms/__init__.py:672 core/validators.py:174 core/validators.py:445 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "Не е получен файл. Проверете типът кодиране на формата. " + +#: oldforms/__init__.py:674 +msgid "The submitted file is empty." +msgstr "Каченият файл е празен. " + +#: oldforms/__init__.py:730 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "Въведете цяло число между -32768 и 32767." + +#: oldforms/__init__.py:740 +msgid "Enter a positive number." +msgstr "Въведете положително число. " + +#: oldforms/__init__.py:750 +msgid "Enter a whole number between 0 and 32,767." +msgstr "Въведете цяло число между 0 и 32767." + +#: contrib/localflavor/no/forms.py:15 +msgid "Enter a zip code in the format XXXX." +msgstr "Въведете пощенски код в формат XXXX." + +#: contrib/localflavor/no/forms.py:36 +msgid "Enter a valid Norwegian social security number." +msgstr "Въведете валиден норвежки номер на социалната осигуровка." + +#: contrib/localflavor/it/forms.py:14 contrib/localflavor/fr/forms.py:17 +#: contrib/localflavor/fi/forms.py:14 contrib/localflavor/de/forms.py:16 +msgid "Enter a zip code in the format XXXXX." +msgstr "Въведете пощенски код в формат XXXXX." + +#: contrib/localflavor/jp/forms.py:21 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "Въведете пощенски код в формат XXXXXXX или XXX-XXXX." + +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:6 +msgid "Iwate" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:16 +msgid "Tokyo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +msgid "Shimane" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +msgid "Kagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +msgid "Ehime" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" +msgstr "" + +#: contrib/localflavor/br/forms.py:18 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "Въведете пощенски код в формат XXXXX-XXX." + +#: contrib/localflavor/br/forms.py:30 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "Телефонните номера трябва да бъдат в формат XX-XXXX-XXXX. " + +#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:46 +msgid "Enter a valid Finnish social security number." +msgstr "Въведете валиден финландски номер на социалната осигуровка." + +#: contrib/localflavor/uk/forms.py:18 +msgid "Enter a postcode. A space is required between the two postcode parts." +msgstr "Въведете пощенски код. Между двете части на пощенския код трябва да има разстояние. " + +#: contrib/localflavor/de/forms.py:63 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format" +msgstr "Въведете валиден номер на германска лична карта в формат XXXXXXXXXXX-XXXXXXX-XXXXXXX-X." + +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "" + +#: contrib/localflavor/de/de_states.py:7 +msgid "Berlin" +msgstr "" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:11 +msgid "Hessen" +msgstr "" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "" + +#: contrib/localflavor/usa/forms.py:18 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "Въведете zip код в формат XXXXX или XXXXX-XXXX." + +#: contrib/localflavor/usa/forms.py:51 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "Въведете валиден номер на социалната осигуровка в формат XXX-XX-XXXX." + +#: contrib/sessions/models.py:68 +msgid "session key" +msgstr "ключ на сесията" + +#: contrib/sessions/models.py:69 +msgid "session data" +msgstr "данни от сесията" + +#: contrib/sessions/models.py:70 +msgid "expire date" +msgstr "дата на валидност" + +#: contrib/sessions/models.py:74 +msgid "session" +msgstr "сесия" + +#: contrib/sessions/models.py:75 +msgid "sessions" +msgstr "сесии" + +#: contrib/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 "Браузерът, който използвате не поддържа cookies, а те са необходими за да можете да се логнете. " + +#: 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 "С този email адрес няма обвързан потребителски акаунт. Сигурни ли сте, че сте се регистрирали?" + +#: 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 "e-mail адрес" + +#: contrib/auth/models.py:94 +msgid "password" +msgstr "парола" + +#: contrib/auth/models.py:94 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "Въведете '[algo]$[salt]$[hexdigest]' или използвайте формата за смяна на парола." + +#: contrib/auth/models.py:95 +msgid "staff status" +msgstr "персонал" + +#: contrib/auth/models.py:95 +msgid "Designates whether the user can log into this admin site." +msgstr "Указва дали този потребител има достъп до административния панел." + +#: contrib/auth/models.py:96 +msgid "active" +msgstr "активен" + +#: contrib/auth/models.py:96 +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "Указва дали този потребител може да влезе в административния панел . Премахнете тази маркировка вместо да изтривате акаунти. " + +#: contrib/auth/models.py:97 +msgid "superuser status" +msgstr "статут на супер-потребител" + +#: contrib/auth/models.py:97 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "Указва, че този потребител има всички права (без да има нужда да се указват изрично)." + +#: contrib/auth/models.py:98 +msgid "last login" +msgstr "последен логин" + +#: contrib/auth/models.py:99 +msgid "date joined" +msgstr "дата на регистриране" + +#: contrib/auth/models.py:101 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "Освен ръчно указаните права, този потребител също ще получи правата на всяка група, към която принадлежи. " + +#: contrib/auth/models.py:102 +msgid "user permissions" +msgstr "потребителски права" + +#: contrib/auth/models.py:105 +msgid "user" +msgstr "потребител" + +#: contrib/auth/models.py:106 +msgid "users" +msgstr "потребители" + +#: contrib/auth/models.py:111 +msgid "Personal info" +msgstr "Лична информация" + +#: contrib/auth/models.py:112 +msgid "Permissions" +msgstr "Права" + +#: contrib/auth/models.py:113 +msgid "Important dates" +msgstr "Важни дати" + +#: contrib/auth/models.py:114 +msgid "Groups" +msgstr "Групи" + +#: contrib/auth/models.py:258 +msgid "message" +msgstr "съобщение" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "th" +msgstr "и" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "st" +msgstr "ви" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "nd" +msgstr "ри" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "rd" +msgstr "ти" + +#: contrib/humanize/templatetags/humanize.py:47 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "%(value).1f милион" +msgstr[1] "%(value).1f милиона" + +#: contrib/humanize/templatetags/humanize.py:50 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "%(value).1f милиард" +msgstr[1] "%(value).1f милиарда" + +#: contrib/humanize/templatetags/humanize.py:53 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "%(value).1f трилион" +msgstr[1] "%(value).1f трилионаn" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "one" +msgstr "един" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "two" +msgstr "два" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "three" +msgstr "три" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "four" +msgstr "четири" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "five" +msgstr "пет" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "six" +msgstr "шест" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "seven" +msgstr "седем" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "eight" +msgstr "осем" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "nine" +msgstr "девет" + +#: contrib/contenttypes/models.py:36 +msgid "python model class name" +msgstr "има на класа на модела в Python" + +#: contrib/contenttypes/models.py:39 +msgid "content type" +msgstr "тип на съдържанието" + +#: contrib/contenttypes/models.py:40 +msgid "content types" +msgstr "типове съдържание" + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "препратка от" + +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "Това трябва да бъде абсолютен път, без името на домейна. Пример: '/events/search/'." + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "препратка към" + +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "Това може да бъде или абсолютен път (като горното) или пълен URL, започващ с 'http://'." + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "препратка" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "препратки" + +#: contrib/flatpages/models.py:7 contrib/admin/views/doc.py:315 +msgid "URL" +msgstr "URL" + +#: contrib/flatpages/models.py:8 +msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "Пример: '/about/contact/'. Началната и крайната наклонена чертичка са задължителни. " + +#: contrib/flatpages/models.py:9 +msgid "title" +msgstr "заглавие" + +#: contrib/flatpages/models.py:10 +msgid "content" +msgstr "съдържание" + +#: contrib/flatpages/models.py:11 +msgid "enable comments" +msgstr "позволяване на коментари" + +#: contrib/flatpages/models.py:12 +msgid "template name" +msgstr "име на шаблон" + +#: contrib/flatpages/models.py:13 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "Пример: 'flatpages/contact_page.html'. Ако това не е указано, системата ще използва 'flatpages/default.html'. " + +#: contrib/flatpages/models.py:14 +msgid "registration required" +msgstr "изисква се регистрация" + +#: contrib/flatpages/models.py:14 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "Ако това е чекнато, само логнати потребители ще могат да виждат страницата. " + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "информативна страница" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "информативни страници" + +#: contrib/comments/models.py:67 contrib/comments/models.py:166 +msgid "object ID" +msgstr "ID на обекта" + +#: contrib/comments/models.py:68 +msgid "headline" +msgstr "заглавие" + +#: contrib/comments/models.py:69 contrib/comments/models.py:90 +#: contrib/comments/models.py:167 +msgid "comment" +msgstr "коментар" + +#: contrib/comments/models.py:70 +msgid "rating #1" +msgstr "рейтинг #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 "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 "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 "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 "%(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 "Невалидно ID на коментар" + +#: contrib/comments/views/karma.py:25 +msgid "No voting for yourself" +msgstr "Не можете да гласувате за себе си" + +#: contrib/comments/views/comments.py:27 +msgid "This rating is required because you've entered at least one other rating." +msgstr "Този рейтинг е задължителен, понеже сте въвели поне един друг рейтинг. " + +#: contrib/comments/views/comments.py:111 +#, python-format +msgid "" +"This comment was posted by a user who has posted fewer than %(count)s " +"comment:\n" +"\n" +"%(text)s" +msgid_plural "" +"This comment was posted by a user who has posted fewer than %(count)s " +"comments:\n" +"\n" +"%(text)s" +msgstr[0] "" +"Този коментар е от потребител, който има по-малко от %(count)s " +"коментар:\n" +"\n" +"%(text)s" +msgstr[1] "" +"Този коментар е от потребител, който има по-малко от %(count)s " +"коментара:\n" +"\n" +"%(text)s" + +#: contrib/comments/views/comments.py:116 +#, python-format +msgid "" +"This comment was posted by a sketchy user:\n" +"\n" +"%(text)s" +msgstr "" +"Този коментар е от съмнителен потребител:\n" +"\n" +"%(text)s" + +#: contrib/comments/views/comments.py:188 +#: contrib/comments/views/comments.py:280 +msgid "Only POSTs are allowed" +msgstr "Само POST заявките са позволени" + +#: contrib/comments/views/comments.py:192 +#: contrib/comments/views/comments.py:284 +msgid "One or more of the required fields wasn't submitted" +msgstr "Едно или повече от задължителните полета липсва" + +#: contrib/comments/views/comments.py:196 +#: contrib/comments/views/comments.py:286 +msgid "Somebody tampered with the comment form (security violation)" +msgstr "Някой е променял формата за коментари (нарушение на сигурността)" + +#: contrib/comments/views/comments.py:206 +#: contrib/comments/views/comments.py:292 +msgid "" +"The comment form had an invalid 'target' parameter -- the object ID was " +"invalid" +msgstr "Формата за коментарите има невалиден параметър 'target' -- ID-то на обекта е невалидно" + +#: contrib/comments/views/comments.py:257 +#: contrib/comments/views/comments.py:321 +msgid "The comment form didn't provide either 'preview' or 'post'" +msgstr "Формата за коментарите не предоставя нито преглед нито постване. " + +#: contrib/sites/models.py:10 +msgid "domain name" +msgstr "име на домейна" + +#: contrib/sites/models.py:11 +msgid "display name" +msgstr "наименование" + +#: contrib/sites/models.py:15 +msgid "site" +msgstr "сайт" + +#: contrib/sites/models.py:16 +msgid "sites" +msgstr "сайтове" + +#: contrib/admin/filterspecs.py:40 +#, python-format +msgid "" +"

By %s:

\n" +"