1
0
mirror of https://github.com/django/django.git synced 2025-07-05 18:29:11 +00:00

gis: Merged revisions 4786-5490 via svnmerge from

http://code.djangoproject.com/svn/django/trunk

git-svn-id: http://code.djangoproject.com/svn/django/branches/gis@5492 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Jeremy Dunck 2007-06-18 16:48:27 +00:00
parent 48c9f87e1f
commit bdcc95e5cc
350 changed files with 45979 additions and 19391 deletions

51
AUTHORS
View File

@ -41,12 +41,17 @@ And here is an inevitably incomplete list of MUCH-APPRECIATED CONTRIBUTORS --
people who have submitted patches, reported bugs, added translations, helped people who have submitted patches, reported bugs, added translations, helped
answer newbie questions, and generally made Django that much better: answer newbie questions, and generally made Django that much better:
adurdin@gmail.com alang@bright-green.com
Marty Alchin <gulopine@gamemusic.org>
Daniel Alves Barbosa de Oliveira Vaz <danielvaz@gmail.com>
Andreas Andreas
andy@jadedplanet.net andy@jadedplanet.net
Fabrice Aneche <akh@nobugware.com>
ant9000@netwise.it ant9000@netwise.it
David Ascher <http://ascher.ca/> David Ascher <http://ascher.ca/>
david@kazserve.org
Arthur <avandorp@gmail.com> Arthur <avandorp@gmail.com>
axiak@mit.edu
Jiri Barton Jiri Barton
Ned Batchelder <http://www.nedbatchelder.com/> Ned Batchelder <http://www.nedbatchelder.com/>
Shannon -jj Behrens <http://jjinux.blogspot.com/> Shannon -jj Behrens <http://jjinux.blogspot.com/>
@ -63,32 +68,45 @@ answer newbie questions, and generally made Django that much better:
Chris Chamberlin <dja@cdc.msbx.net> Chris Chamberlin <dja@cdc.msbx.net>
Amit Chakradeo <http://amit.chakradeo.net/> Amit Chakradeo <http://amit.chakradeo.net/>
ChaosKCW ChaosKCW
ivan.chelubeev@gmail.com
Bryan Chow <bryan at verdjn dot com>
Michal Chruszcz <troll@pld-linux.org>
Ian Clelland <clelland@gmail.com> Ian Clelland <clelland@gmail.com>
crankycoder@gmail.com crankycoder@gmail.com
Pete Crosier <pete.crosier@gmail.com>
Matt Croydon <http://www.postneo.com/> Matt Croydon <http://www.postneo.com/>
flavio.curella@gmail.com
Jure Cuhalev <gandalf@owca.info> Jure Cuhalev <gandalf@owca.info>
dackze+django@gmail.com dackze+django@gmail.com
David Danier <goliath.mailinglist@gmx.de>
Dirk Datzert <dummy@habmalnefrage.de> Dirk Datzert <dummy@habmalnefrage.de>
Jonathan Daugherty (cygnus) <http://www.cprogrammer.org/> Jonathan Daugherty (cygnus) <http://www.cprogrammer.org/>
dave@thebarproject.com dave@thebarproject.com
Jason Davies (Esaj) <http://www.jasondavies.com/> Jason Davies (Esaj) <http://www.jasondavies.com/>
Alex Dedul Alex Dedul
deric@monowerks.com deric@monowerks.com
Max Derkachev <mderk@yandex.ru>
Jordan Dimov <s3x3y1@gmail.com>
dne@mayonnaise.net dne@mayonnaise.net
Maximillian Dornseif <md@hudora.de> Maximillian Dornseif <md@hudora.de>
Jeremy Dunck <http://dunck.us/> Jeremy Dunck <http://dunck.us/>
Andrew Durdin <adurdin@gmail.com>
Andy Dustman <farcepest@gmail.com> Andy Dustman <farcepest@gmail.com>
Clint Ecker Clint Ecker
enlight
Enrico <rico.bl@gmail.com> Enrico <rico.bl@gmail.com>
Ludvig Ericson <ludvig.ericson@gmail.com> Ludvig Ericson <ludvig.ericson@gmail.com>
Dirk Eschler <dirk.eschler@gmx.net> Dirk Eschler <dirk.eschler@gmx.net>
Marc Fargas <telenieko@telenieko.com> Marc Fargas <telenieko@telenieko.com>
favo@exoweb.net favo@exoweb.net
Bill Fenner <fenner@gmail.com>
Matthew Flanagan <http://wadofstuff.blogspot.com>
Eric Floehr <eric@intellovations.com> Eric Floehr <eric@intellovations.com>
Jorge Gajon <gajon@gajon.org> Jorge Gajon <gajon@gajon.org>
gandalf@owca.info gandalf@owca.info
Baishampayan Ghose Baishampayan Ghose
martin.glueck@gmail.com martin.glueck@gmail.com
GomoX <gomo@datafull.com>
Simon Greenhill <dev@simon.net.nz> Simon Greenhill <dev@simon.net.nz>
Owen Griffiths Owen Griffiths
Espen Grindhaug <http://grindhaug.org/> Espen Grindhaug <http://grindhaug.org/>
@ -100,40 +118,49 @@ answer newbie questions, and generally made Django that much better:
hipertracker@gmail.com hipertracker@gmail.com
Ian Holsman <http://feh.holsman.net/> Ian Holsman <http://feh.holsman.net/>
Kieran Holland <http://www.kieranholland.com> Kieran Holland <http://www.kieranholland.com>
Sung-Jin Hong <serialx.net@gmail.com>
Robert Rock Howard <http://djangomojo.com/> Robert Rock Howard <http://djangomojo.com/>
Jason Huggins <http://www.jrandolph.com/blog/> Jason Huggins <http://www.jrandolph.com/blog/>
Hyun Mi Ae
Tom Insam Tom Insam
Baurzhan Ismagulov <ibr@radix50.net> Baurzhan Ismagulov <ibr@radix50.net>
jcrasta@gmail.com jcrasta@gmail.com
Zak Johnson <zakj@nox.cx>
Michael Josephson <http://www.sdjournal.com/> Michael Josephson <http://www.sdjournal.com/>
jpellerin@gmail.com jpellerin@gmail.com
junzhang.jn@gmail.com junzhang.jn@gmail.com
Antti Kaihola <http://akaihola.blogspot.com/> Antti Kaihola <http://akaihola.blogspot.com/>
Ben Dean Kawamura <ben.dean.kawamura@gmail.com> Ben Dean Kawamura <ben.dean.kawamura@gmail.com>
ian.g.kelly@gmail.com
Garth Kidd <http://www.deadlybloodyserious.com/> Garth Kidd <http://www.deadlybloodyserious.com/>
kilian <kilian.cavalotti@lip6.fr> kilian <kilian.cavalotti@lip6.fr>
Sune Kirkeby <http://ibofobi.dk/> Sune Kirkeby <http://ibofobi.dk/>
Bastian Kleineidam <calvin@debian.org> Bastian Kleineidam <calvin@debian.org>
Cameron Knight (ckknight) Cameron Knight (ckknight)
Gasper Koren
Martin Kosír <martin@martinkosir.net>
Meir Kriheli <http://mksoft.co.il/> Meir Kriheli <http://mksoft.co.il/>
Bruce Kroeze <http://coderseye.com/> Bruce Kroeze <http://coderseye.com/>
Joseph Kocherhans Joseph Kocherhans
konrad@gwu.edu konrad@gwu.edu
lakin.wecker@gmail.com lakin.wecker@gmail.com
Nick Lane <nick.lane.au@gmail.com>
Stuart Langridge <http://www.kryogenix.org/> Stuart Langridge <http://www.kryogenix.org/>
Nicola Larosa <nico@teknico.net> Nicola Larosa <nico@teknico.net>
Eugene Lazutkin <http://lazutkin.com/blog/> Eugene Lazutkin <http://lazutkin.com/blog/>
Jeong-Min Lee <falsetru@gmail.com> Jeong-Min Lee <falsetru@gmail.com>
Jannis Leidel <jl@websushi.org>
Christopher Lenz <http://www.cmlenz.net/> Christopher Lenz <http://www.cmlenz.net/>
lerouxb@gmail.com lerouxb@gmail.com
Waylan Limberg <waylan@gmail.com> Waylan Limberg <waylan@gmail.com>
limodou limodou
mattmcc Matt McClanahan <http://mmcc.cx/>
Martin Maney <http://www.chipy.org/Martin_Maney> Martin Maney <http://www.chipy.org/Martin_Maney>
masonsimon+django@gmail.com masonsimon+django@gmail.com
Manuzhai Manuzhai
Petar Marić <http://www.petarmaric.com/> Petar Marić <http://www.petarmaric.com/>
Nuno Mariz <nmariz@gmail.com> Nuno Mariz <nmariz@gmail.com>
marijn@metronomo.cl
mark@junklight.com mark@junklight.com
Yasushi Masuda <whosaysni@gmail.com> Yasushi Masuda <whosaysni@gmail.com>
mattycakes@gmail.com mattycakes@gmail.com
@ -144,15 +171,18 @@ answer newbie questions, and generally made Django that much better:
mitakummaa@gmail.com mitakummaa@gmail.com
mmarshall mmarshall
Eric Moritz <http://eric.themoritzfamily.com/> Eric Moritz <http://eric.themoritzfamily.com/>
mrmachine <real.human@mrmachine.net>
Robin Munn <http://www.geekforgod.com/> Robin Munn <http://www.geekforgod.com/>
Robert Myers <myer0052@gmail.com> Robert Myers <myer0052@gmail.com>
Nebojša Dorđević Nebojša Dorđević
Gopal Narayanan <gopastro@gmail.com>
Fraser Nevett <mail@nevett.org> Fraser Nevett <mail@nevett.org>
Sam Newman <http://www.magpiebrain.com/> Sam Newman <http://www.magpiebrain.com/>
Neal Norwitz <nnorwitz@google.com> Neal Norwitz <nnorwitz@google.com>
oggie rob <oz.robharvey@gmail.com> oggie rob <oz.robharvey@gmail.com>
Jay Parlar <parlar@gmail.com> Jay Parlar <parlar@gmail.com>
pavithran s <pavithran.s@gmail.com> pavithran s <pavithran.s@gmail.com>
Barry Pederson <bp@barryp.org>
pgross@thoughtworks.com pgross@thoughtworks.com
phaedo <http://phaedo.cx/> phaedo <http://phaedo.cx/>
phil@produxion.net phil@produxion.net
@ -161,14 +191,19 @@ answer newbie questions, and generally made Django that much better:
Luke Plant <http://lukeplant.me.uk/> Luke Plant <http://lukeplant.me.uk/>
plisk plisk
Daniel Poelzleithner <http://poelzi.org/> Daniel Poelzleithner <http://poelzi.org/>
polpak@yahoo.com
J. Rademaker J. Rademaker
Michael Radziej <mir@noris.de> Michael Radziej <mir@noris.de>
ramiro Ramiro Morales <rm0@gmx.net>
Massimiliano Ravelli <massimiliano.ravelli@gmail.com>
Brian Ray <http://brianray.chipy.org/> Brian Ray <http://brianray.chipy.org/>
remco@diji.biz remco@diji.biz
rhettg@gmail.com rhettg@gmail.com
Henrique Romano <onaiort@gmail.com>
Armin Ronacher
Oliver Rutherfurd <http://rutherfurd.net/> Oliver Rutherfurd <http://rutherfurd.net/>
Ivan Sagalaev (Maniac) <http://www.softwaremaniacs.org/> Ivan Sagalaev (Maniac) <http://www.softwaremaniacs.org/>
Vinay Sajip <vinay_sajip@yahoo.co.uk>
David Schein David Schein
scott@staplefish.com scott@staplefish.com
serbaut@gmail.com serbaut@gmail.com
@ -176,25 +211,35 @@ answer newbie questions, and generally made Django that much better:
SmileyChris <smileychris@gmail.com> SmileyChris <smileychris@gmail.com>
smurf@smurf.noris.de smurf@smurf.noris.de
sopel sopel
Wiliam Alves de Souza <wiliamsouza83@gmail.com>
Georgi Stanojevski <glisha@gmail.com> Georgi Stanojevski <glisha@gmail.com>
Vasiliy Stavenko <stavenko@gmail.com>
Thomas Steinacher <http://www.eggdrop.ch/> Thomas Steinacher <http://www.eggdrop.ch/>
nowell strite nowell strite
Radek Švarz <http://www.svarz.cz/translate/> Radek Švarz <http://www.svarz.cz/translate/>
Swaroop C H <http://www.swaroopch.info> Swaroop C H <http://www.swaroopch.info>
Aaron Swartz <http://www.aaronsw.com/> Aaron Swartz <http://www.aaronsw.com/>
Ville Säävuori <http://www.unessa.net/>
Tyson Tate <tyson@fallingbullets.com> Tyson Tate <tyson@fallingbullets.com>
Frank Tegtmeyer <fte@fte.to>
thebjorn <bp@datakortet.no>
Zach Thompson <zthompson47@gmail.com>
Tom Tobin Tom Tobin
Joe Topjian <http://joe.terrarum.net/geek/code/python/django/> Joe Topjian <http://joe.terrarum.net/geek/code/python/django/>
torne-django@wolfpuppy.org.uk torne-django@wolfpuppy.org.uk
Karen Tracey <graybark@bellsouth.net> Karen Tracey <graybark@bellsouth.net>
Makoto Tsuyuki <mtsuyuki@gmail.com> Makoto Tsuyuki <mtsuyuki@gmail.com>
tt@gurgle.no
Amit Upadhyay Amit Upadhyay
Geert Vanderkelen Geert Vanderkelen
viestards.lists@gmail.com viestards.lists@gmail.com
Milton Waddams Milton Waddams
wam-djangobug@wamber.net wam-djangobug@wamber.net
wangchun <yaohua2000@gmail.com>
Dan Watson <http://theidioteque.net/> Dan Watson <http://theidioteque.net/>
Chris Wesseling <Chris.Wesseling@cwi.nl> Chris Wesseling <Chris.Wesseling@cwi.nl>
James Wheare <django@sparemint.com>
charly.wilhelm@gmail.com
Rachel Willmer <http://www.willmer.com/kb/> Rachel Willmer <http://www.willmer.com/kb/>
Gary Wilson <gary.wilson@gmail.com> Gary Wilson <gary.wilson@gmail.com>
wojtek wojtek

View File

@ -1,10 +1,15 @@
include README
include AUTHORS include AUTHORS
include INSTALL include INSTALL
include LICENSE include LICENSE
include MANIFEST.in
recursive-include docs * recursive-include docs *
recursive-include scripts * recursive-include scripts *
recursive-include examples *
recursive-include extras *
recursive-include django/conf/locale * recursive-include django/conf/locale *
recursive-include django/contrib/admin/templates * recursive-include django/contrib/admin/templates *
recursive-include django/contrib/admin/media * recursive-include django/contrib/admin/media *
recursive-include django/contrib/comments/templates * recursive-include django/contrib/comments/templates *
recursive-include django/contrib/databrowse/templates *
recursive-include django/contrib/sitemaps/templates * recursive-include django/contrib/sitemaps/templates *

View File

@ -1 +1,8 @@
VERSION = (0, 96, None) 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

View File

@ -31,9 +31,9 @@ def compile_messages(locale=None):
os.environ['djangocompilemo'] = pf + '.mo' os.environ['djangocompilemo'] = pf + '.mo'
os.environ['djangocompilepo'] = pf + '.po' os.environ['djangocompilepo'] = pf + '.po'
if sys.platform == 'win32': # Different shell-variable syntax if sys.platform == 'win32': # Different shell-variable syntax
cmd = 'msgfmt -o "%djangocompilemo%" "%djangocompilepo%"' cmd = 'msgfmt --check-format -o "%djangocompilemo%" "%djangocompilepo%"'
else: else:
cmd = 'msgfmt -o "$djangocompilemo" "$djangocompilepo"' cmd = 'msgfmt --check-format -o "$djangocompilemo" "$djangocompilepo"'
os.system(cmd) os.system(cmd)
def main(): def main():

View File

@ -7,13 +7,13 @@ Can be run as a cronjob to clean out old data from the database (only expired
sessions at the moment). 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(): def clean_up():
# Clean up old database records """Clean up expired sessions."""
cursor = connection.cursor() Session.objects.filter(expire_date__lt=datetime.datetime.now()).delete()
cursor.execute("DELETE FROM %s WHERE %s < NOW()" % \
(backend.quote_name('django_session'), backend.quote_name('expire_date')))
transaction.commit_unless_managed() transaction.commit_unless_managed()
if __name__ == "__main__": if __name__ == "__main__":

View File

@ -81,7 +81,7 @@ def make_messages():
src = pythonize_re.sub('\n#', src) src = pythonize_re.sub('\n#', src)
open(os.path.join(dirpath, '%s.py' % file), "wb").write(src) open(os.path.join(dirpath, '%s.py' % file), "wb").write(src)
thefile = '%s.py' % file thefile = '%s.py' % file
cmd = 'xgettext %s -d %s -L Perl --keyword=gettext_noop --keyword=gettext_lazy --keyword=ngettext_lazy --from-code UTF-8 -o - "%s"' % ( cmd = 'xgettext %s -d %s -L Perl --keyword=gettext_noop --keyword=gettext_lazy --keyword=ngettext_lazy:1,2 --from-code UTF-8 -o - "%s"' % (
os.path.exists(potfile) and '--omit-header' or '', domain, os.path.join(dirpath, thefile)) os.path.exists(potfile) and '--omit-header' or '', domain, os.path.join(dirpath, thefile))
(stdin, stdout, stderr) = os.popen3(cmd, 'b') (stdin, stdout, stderr) = os.popen3(cmd, 'b')
msgs = stdout.read() msgs = stdout.read()
@ -103,7 +103,7 @@ def make_messages():
open(os.path.join(dirpath, '%s.py' % file), "wb").write(templatize(src)) open(os.path.join(dirpath, '%s.py' % file), "wb").write(templatize(src))
thefile = '%s.py' % file thefile = '%s.py' % file
if verbose: sys.stdout.write('processing file %s in %s\n' % (file, dirpath)) if verbose: sys.stdout.write('processing file %s in %s\n' % (file, dirpath))
cmd = 'xgettext %s -d %s -L Python --keyword=gettext_noop --keyword=gettext_lazy --keyword=ngettext_lazy --from-code UTF-8 -o - "%s"' % ( cmd = 'xgettext %s -d %s -L Python --keyword=gettext_noop --keyword=gettext_lazy --keyword=ngettext_lazy:1,2 --from-code UTF-8 -o - "%s"' % (
os.path.exists(potfile) and '--omit-header' or '', domain, os.path.join(dirpath, thefile)) os.path.exists(potfile) and '--omit-header' or '', domain, os.path.join(dirpath, thefile))
(stdin, stdout, stderr) = os.popen3(cmd, 'b') (stdin, stdout, stderr) = os.popen3(cmd, 'b')
msgs = stdout.read() msgs = stdout.read()

View File

@ -22,7 +22,7 @@ def gather_stats(p):
else: else:
continue continue
print "Processing %s" % f print "Processing %s" % f
if profiles.has_key(path): if path in profiles:
profiles[path].add(prof) profiles[path].add(prof)
else: else:
profiles[path] = prof profiles[path] = prof

View File

@ -38,6 +38,7 @@ LANGUAGE_CODE = 'en-us'
LANGUAGES = ( LANGUAGES = (
('ar', gettext_noop('Arabic')), ('ar', gettext_noop('Arabic')),
('bn', gettext_noop('Bengali')), ('bn', gettext_noop('Bengali')),
('bg', gettext_noop('Bulgarian')),
('ca', gettext_noop('Catalan')), ('ca', gettext_noop('Catalan')),
('cs', gettext_noop('Czech')), ('cs', gettext_noop('Czech')),
('cy', gettext_noop('Welsh')), ('cy', gettext_noop('Welsh')),
@ -55,6 +56,7 @@ LANGUAGES = (
('is', gettext_noop('Icelandic')), ('is', gettext_noop('Icelandic')),
('it', gettext_noop('Italian')), ('it', gettext_noop('Italian')),
('ja', gettext_noop('Japanese')), ('ja', gettext_noop('Japanese')),
('ko', gettext_noop('Korean')),
('kn', gettext_noop('Kannada')), ('kn', gettext_noop('Kannada')),
('lv', gettext_noop('Latvian')), ('lv', gettext_noop('Latvian')),
('mk', gettext_noop('Macedonian')), ('mk', gettext_noop('Macedonian')),
@ -118,6 +120,7 @@ EMAIL_PORT = 25
# Optional SMTP authentication information for EMAIL_HOST. # Optional SMTP authentication information for EMAIL_HOST.
EMAIL_HOST_USER = '' EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = '' EMAIL_HOST_PASSWORD = ''
EMAIL_USE_TLS = False
# List of strings representing installed apps. # List of strings representing installed apps.
INSTALLED_APPS = () INSTALLED_APPS = ()
@ -141,6 +144,7 @@ TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.auth', 'django.core.context_processors.auth',
'django.core.context_processors.debug', 'django.core.context_processors.debug',
'django.core.context_processors.i18n', 'django.core.context_processors.i18n',
'django.core.context_processors.media',
# 'django.core.context_processors.request', # 'django.core.context_processors.request',
) )
@ -237,7 +241,8 @@ TRANSACTIONS_MANAGED = False
# The User-Agent string to use when checking for URL validity through the # The User-Agent string to use when checking for URL validity through the
# isExistingURL validator. # isExistingURL validator.
URL_VALIDATOR_USER_AGENT = "Django/0.96pre (http://www.djangoproject.com)" from django import get_version
URL_VALIDATOR_USER_AGENT = "Django/%s (http://www.djangoproject.com)" % get_version()
############## ##############
# MIDDLEWARE # # MIDDLEWARE #
@ -311,6 +316,12 @@ BANNED_IPS = ()
AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',) AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',)
LOGIN_URL = '/accounts/login/'
LOGOUT_URL = '/accounts/logout/'
LOGIN_REDIRECT_URL = '/accounts/profile/'
########### ###########
# TESTING # # TESTING #
########### ###########
@ -322,6 +333,13 @@ TEST_RUNNER = 'django.test.simple.run_tests'
# If None, a name of 'test_' + DATABASE_NAME will be assumed # If None, a name of 'test_' + DATABASE_NAME will be assumed
TEST_DATABASE_NAME = None 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 # # FIXTURES #
############ ############

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -0,0 +1,106 @@
# translation of djangojs.po to Bulgarian
#
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-05-12 17:51+0300\n"
"Last-Translator: Jordan Dimov <s3x3y1@gmail.com>\n"
"Language-Team: Bulgarian\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 "Налични %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 a.m."
#: 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 "Утре"

File diff suppressed because it is too large Load Diff

View File

@ -3,20 +3,19 @@
# Copyright (C) # Copyright (C)
# This file is distributed under the same license as the PACKAGE package. # 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 "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: djangojs\n" "Project-Id-Version: djangojs\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-15 11:05+1100\n" "POT-Creation-Date: 2007-05-20 18:25+0200\n"
"PO-Revision-Date: 2007-01-19 10:30+0100\n" "PO-Revision-Date: 2007-05-20 18:24+0200\n"
"Last-Translator: Marc Fargas <marc@fargas.com>\n" "Last-Translator: Marc Fargas <marc@fargas.com>\n"
"Language-Team: <es@li.org>\n" "Language-Team: <es@li.org>\n"
"MIME-Version: 1.0\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" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n" "X-Generator: VIM 7.0\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: contrib/admin/media/js/SelectFilter2.js:33 #: contrib/admin/media/js/SelectFilter2.js:33
#, perl-format #, perl-format
@ -54,7 +53,7 @@ msgid ""
"January February March April May June July August September October November " "January February March April May June July August September October November "
"December" "December"
msgstr "" msgstr ""
"Febrer Març Abril Maig Juny Juliol Agost Setembre Octubre Novembre Desembre" "Febrer Març Abril Maig Juny Juliol Agost Setembre Octubre Novembre Desembre"
#: contrib/admin/media/js/dateparse.js:33 #: contrib/admin/media/js/dateparse.js:33
msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
@ -92,7 +91,7 @@ msgstr "Migdia"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
msgid "Cancel" msgid "Cancel"
msgstr "Cancel·lar" msgstr "Cancel·lar"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
@ -109,13 +108,13 @@ msgstr "Ahir"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
msgid "Tomorrow" msgid "Tomorrow"
msgstr "Demà" msgstr "Demà"
#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34 #: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72 #: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
msgid "Show" msgid "Show"
msgstr "" msgstr "Mostrar"
#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63 #: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
msgid "Hide" msgid "Hide"
msgstr "" msgstr "Ocultar"

File diff suppressed because it is too large Load Diff

View File

@ -10,7 +10,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-05-16 10:13+0200\n" "POT-Creation-Date: 2006-05-16 10:13+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: panos laganakos <panos.laganakos@gmail.com>\n" "Last-Translator: Orestis Markou <orestis@orestis.gr>\n"
"Language-Team: Greek\n" "Language-Team: Greek\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
@ -164,9 +164,9 @@ msgid ""
"\n" "\n"
"%(text)s" "%(text)s"
msgstr "" msgstr ""
"Αυτο το σχόλιο σημειώθηκε απο %(χρήστη)ες\n" "Αυτο το σχόλιο σημειώθηκε απο %(user)s\n"
"\n" "\n"
"%(κείμενο)α" "%(text)s"
#: contrib/comments/models.py:265 #: contrib/comments/models.py:265
msgid "flag date" msgid "flag date"

File diff suppressed because it is too large Load Diff

View File

@ -305,7 +305,7 @@ msgstr "Japon
#: conf/global_settings.py:58 #: conf/global_settings.py:58
msgid "Latvian" msgid "Latvian"
msgstr "" msgstr "Latvio"
#: conf/global_settings.py:59 #: conf/global_settings.py:59
msgid "Macedonian" msgid "Macedonian"
@ -611,7 +611,7 @@ msgstr "La URL %s no apunta a una imagen v
#, python-format #, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr "" msgstr ""
"Los números de teléfono deben guardar el formato XXX-XXX-XXXX format. \"%s\" " "Los números de teléfono deben guardar el formato XXX-XXX-XXXX. \"%s\" "
"no es válido." "no es válido."
#: core/validators.py:196 #: core/validators.py:196
@ -726,10 +726,10 @@ msgid "Please enter a valid decimal number with a whole part of at most %s digit
msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits." msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits."
msgstr[0] "" msgstr[0] ""
"Por favor, introduzca un número decimal válido con a lo más %s dígito en " "Por favor, introduzca un número decimal válido con a lo más %s dígito en "
"total." "su parte entera."
msgstr[1] "" msgstr[1] ""
"Por favor, introduzca un número decimal válido con a lo más %s dígitos en " "Por favor, introduzca un número decimal válido con a lo más %s dígitos en "
"total." "su parte entera."
#: core/validators.py:426 #: core/validators.py:426
#, python-format #, python-format
@ -958,7 +958,7 @@ msgid ""
"digits and underscores)." "digits and underscores)."
msgstr "" msgstr ""
"Requerido. 30 caracteres o menos. Sólo caracteres alfanuméricos (letras, " "Requerido. 30 caracteres o menos. Sólo caracteres alfanuméricos (letras, "
"dígutos y guiones bajos)." "dígitos y guiones bajos)."
#: contrib/auth/models.py:91 #: contrib/auth/models.py:91
msgid "first name" msgid "first name"
@ -1107,7 +1107,7 @@ msgstr "Las contrase
#: contrib/auth/forms.py:124 #: contrib/auth/forms.py:124
msgid "Your old password was entered incorrectly. Please enter it again." msgid "Your old password was entered incorrectly. Please enter it again."
msgstr "" msgstr ""
"Tu contraseña antígua es incorrecta. Por favor, vuelve a introducirla " "Tu contraseña antigua es incorrecta. Por favor, vuelve a introducirla "
"correctamente." "correctamente."
#: contrib/comments/models.py:67 contrib/comments/models.py:166 #: contrib/comments/models.py:67 contrib/comments/models.py:166
@ -1707,7 +1707,7 @@ msgid ""
msgstr "" msgstr ""
"Ha ocurrido un error. Se ha informado a los administradores del sitio " "Ha ocurrido un error. Se ha informado a los administradores del sitio "
"mediante correo electrónico y debería arreglarse en breve. Gracias por su " "mediante correo electrónico y debería arreglarse en breve. Gracias por su "
"paciencia" "paciencia."
#: contrib/admin/templates/admin/search_form.html:8 #: contrib/admin/templates/admin/search_form.html:8
msgid "Go" msgid "Go"
@ -1899,7 +1899,7 @@ msgid ""
"the appropriate user." "the appropriate user."
msgstr "" msgstr ""
"Algo va mal con la instalación de la base de datos. Asegúrate que las tablas " "Algo va mal con la instalación de la base de datos. Asegúrate que las tablas "
"necesarias han sido creadas, y que la base de datos puede ser leida por el " "necesarias han sido creadas, y que la base de datos puede ser leída por el "
"usuario apropiado." "usuario apropiado."
#: contrib/admin/templates/admin/filter.html:2 #: contrib/admin/templates/admin/filter.html:2
@ -1912,7 +1912,7 @@ msgid ""
"First, enter a username and password. Then, you'll be able to edit more user " "First, enter a username and password. Then, you'll be able to edit more user "
"options." "options."
msgstr "" msgstr ""
"Primero, introduzca un nombre de usuario y una contraseña. Luego, podrá " "Primero introduzca un nombre de usuario y una contraseña. Luego podrá "
"editar el resto de opciones del usuario." "editar el resto de opciones del usuario."
#: contrib/admin/templates/admin/auth/user/add_form.html:12 #: contrib/admin/templates/admin/auth/user/add_form.html:12
@ -2105,7 +2105,7 @@ msgstr "vista:"
#: contrib/admin/views/doc.py:164 #: contrib/admin/views/doc.py:164
#, python-format #, python-format
msgid "App %r not found" msgid "App %r not found"
msgstr "Applicación %r no encontrada" msgstr "Aplicación %r no encontrada"
#: contrib/admin/views/doc.py:171 #: contrib/admin/views/doc.py:171
#, python-format #, python-format
@ -2326,12 +2326,12 @@ msgstr "Cambiar clave: %s"
#: contrib/localflavor/usa/forms.py:17 #: contrib/localflavor/usa/forms.py:17
msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
msgstr "Introduzca un código zip en el formato XXXXX o XXXX-XXXX." msgstr "Introduzca un código postal en el formato XXXXX o XXXX-XXXX."
#: contrib/localflavor/uk/forms.py:18 #: contrib/localflavor/uk/forms.py:18
msgid "Enter a postcode. A space is required between the two postcode parts." msgid "Enter a postcode. A space is required between the two postcode parts."
msgstr "" msgstr ""
"Introduzca in código postal. Se necesita un espacio entre las dos partes del " "Introduzca un código postal. Se necesita un espacio entre las dos partes del "
"código." "código."
#: contrib/sessions/models.py:51 #: contrib/sessions/models.py:51

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -8,26 +8,14 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: djangojs 1.0\n" "Project-Id-Version: djangojs 1.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-03-30 13:28+0200\n" "POT-Creation-Date: 2007-05-06 13:08+0300\n"
"PO-Revision-Date: 2006-03-30 13:35+0200\n" "PO-Revision-Date: 2007-05-06 13:08+0300\n"
"Last-Translator: Meir Kriheli <meir@mksoft.co.il>\n" "Last-Translator: Meir Kriheli <meir@mksoft.co.il>\n"
"Language-Team: Hebrew\n" "Language-Team: Hebrew\n"
"MIME-Version: 1.0\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" "Content-Transfer-Encoding: 8bit"
#: contrib/admin/media/js/dateparse.js:32
#: contrib/admin/media/js/calendar.js:24
msgid ""
"January February March April May June July August September October November "
"December"
msgstr ""
"ינואר פברואר מרץ אפריל מאי יוני יולי אוגוסט ספטמבר אוקטובר נובמבר דצמבר"
#: contrib/admin/media/js/dateparse.js:33
msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
msgstr "ראשון שני שלישי רביעי חמישי שישי שבת"
#: contrib/admin/media/js/SelectFilter2.js:33 #: contrib/admin/media/js/SelectFilter2.js:33
#, perl-format #, perl-format
msgid "Available %s" msgid "Available %s"
@ -58,54 +46,75 @@ msgstr "יש לסמן את ההרשאות המבוקשות וללחוץ על "
msgid "Clear all" msgid "Clear all"
msgstr "איפוס הכל" msgstr "איפוס הכל"
#: contrib/admin/media/js/calendar.js:24
#: contrib/admin/media/js/dateparse.js:32
msgid ""
"January February March April May June July August September October November "
"December"
msgstr ""
"ינואר פברואר מרץ אפריל מאי יוני יולי אוגוסט ספטמבר אוקטובר נובמבר דצמבר"
#: contrib/admin/media/js/calendar.js:25 #: contrib/admin/media/js/calendar.js:25
msgid "S M T W T F S" msgid "S M T W T F S"
msgstr "ר ש ש ר ח ש ש" msgstr "ר ש ש ר ח ש ש"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45 #: contrib/admin/media/js/dateparse.js:33
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80 msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
msgstr "ראשון שני שלישי רביעי חמישי שישי שבת"
#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
msgid "Show"
msgstr "הצג"
#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
msgid "Hide"
msgstr "הסתר"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
msgid "Now" msgid "Now"
msgstr "כעת" msgstr "כעת"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
msgid "Clock" msgid "Clock"
msgstr "שעון" msgstr "שעון"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
msgid "Choose a time" msgid "Choose a time"
msgstr "בחירת שעה" msgstr "בחירת שעה"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
msgid "Midnight" msgid "Midnight"
msgstr "חצות" msgstr "חצות"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
msgid "6 a.m." msgid "6 a.m."
msgstr "6 בבוקר" msgstr "6 בבוקר"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
msgid "Noon" msgid "Noon"
msgstr "צהריים" msgstr "צהריים"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
msgid "Cancel" msgid "Cancel"
msgstr "ביטול" msgstr "ביטול"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
msgid "Today" msgid "Today"
msgstr "היום" msgstr "היום"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
msgid "Calendar" msgid "Calendar"
msgstr "לוח שנה" msgstr "לוח שנה"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
msgid "Yesterday" msgid "Yesterday"
msgstr "אתמול" msgstr "אתמול"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
msgid "Tomorrow" msgid "Tomorrow"
msgstr "מחר" msgstr "מחר"

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
# Translation of django.po to japanese. # Translation of django.po to japanese.
# Copyright (C) 2005,2006 THE PACKAGE'S COPYRIGHT HOLDER # Copyright (C) 2005,2006,2007 makoto tsuyuki
# This file is distributed under the same license as the PACKAGE package. # This file is distributed under the same license as the PACKAGE package.
# makoto tsuyuki <mtsuyuki@gmail.com>, 2005,2006,2007. # makoto tsuyuki <mtsuyuki@gmail.com>, 2005,2006,2007.
# #
@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Django 1.0\n" "Project-Id-Version: Django 1.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-15 23:43+0900\n" "POT-Creation-Date: 2007-03-26 22:51+0900\n"
"PO-Revision-Date: 2006-05-18 00:28+0900\n" "PO-Revision-Date: 2006-05-18 00:28+0900\n"
"Last-Translator: makoto tsuyuki <mtsuyuki@gmail.com>\n" "Last-Translator: makoto tsuyuki <mtsuyuki@gmail.com>\n"
"Language-Team: Japanese <django-ja@googlegroups.com>\n" "Language-Team: Japanese <django-ja@googlegroups.com>\n"
@ -92,70 +92,82 @@ msgid "Japanese"
msgstr "日本語" msgstr "日本語"
#: conf/global_settings.py:58 #: conf/global_settings.py:58
msgid "Kannada"
msgstr "カンナダ語"
#: conf/global_settings.py:59
msgid "Latvian" msgid "Latvian"
msgstr "ラトビア語" msgstr "ラトビア語"
#: conf/global_settings.py:59 #: conf/global_settings.py:60
msgid "Macedonian" msgid "Macedonian"
msgstr "マケドニア語" msgstr "マケドニア語"
#: conf/global_settings.py:60 #: conf/global_settings.py:61
msgid "Dutch" msgid "Dutch"
msgstr "オランダ語" msgstr "オランダ語"
#: conf/global_settings.py:61 #: conf/global_settings.py:62
msgid "Norwegian" msgid "Norwegian"
msgstr "ノルウェー語" msgstr "ノルウェー語"
#: conf/global_settings.py:62 #: conf/global_settings.py:63
msgid "Polish" msgid "Polish"
msgstr "ポーランド語" msgstr "ポーランド語"
#: conf/global_settings.py:63 #: conf/global_settings.py:64
msgid "Portugese"
msgstr "ポルトガル語"
#: conf/global_settings.py:65
msgid "Brazilian" msgid "Brazilian"
msgstr "ブラジル語" msgstr "ブラジル語"
#: conf/global_settings.py:64 #: conf/global_settings.py:66
msgid "Romanian" msgid "Romanian"
msgstr "ルーマニア語" msgstr "ルーマニア語"
#: conf/global_settings.py:65 #: conf/global_settings.py:67
msgid "Russian" msgid "Russian"
msgstr "ロシア語" msgstr "ロシア語"
#: conf/global_settings.py:66 #: conf/global_settings.py:68
msgid "Slovak" msgid "Slovak"
msgstr "スロバキア語" msgstr "スロバキア語"
#: conf/global_settings.py:67 #: conf/global_settings.py:69
msgid "Slovenian" msgid "Slovenian"
msgstr "スロヴェニア語" msgstr "スロヴェニア語"
#: conf/global_settings.py:68 #: conf/global_settings.py:70
msgid "Serbian" msgid "Serbian"
msgstr "セルビア語" msgstr "セルビア語"
#: conf/global_settings.py:69 #: conf/global_settings.py:71
msgid "Swedish" msgid "Swedish"
msgstr "スウェーデン語" msgstr "スウェーデン語"
#: conf/global_settings.py:70 #: conf/global_settings.py:72
msgid "Tamil" msgid "Tamil"
msgstr "タミル語" msgstr "タミル語"
#: conf/global_settings.py:71 #: conf/global_settings.py:73
msgid "Telugu"
msgstr "テルグ語"
#: conf/global_settings.py:74
msgid "Turkish" msgid "Turkish"
msgstr "トルコ語" msgstr "トルコ語"
#: conf/global_settings.py:72 #: conf/global_settings.py:75
msgid "Ukrainian" msgid "Ukrainian"
msgstr "ウクライナ語" msgstr "ウクライナ語"
#: conf/global_settings.py:73 #: conf/global_settings.py:76
msgid "Simplified Chinese" msgid "Simplified Chinese"
msgstr "簡体字中国語" msgstr "簡体字中国語"
#: conf/global_settings.py:74 #: conf/global_settings.py:77
msgid "Traditional Chinese" msgid "Traditional Chinese"
msgstr "繁体字中国語" msgstr "繁体字中国語"
@ -194,17 +206,17 @@ msgid "This year"
msgstr "今年" msgstr "今年"
#: contrib/admin/filterspecs.py:143 newforms/widgets.py:170 #: contrib/admin/filterspecs.py:143 newforms/widgets.py:170
#: oldforms/__init__.py:572 #: oldforms/__init__.py:577
msgid "Yes" msgid "Yes"
msgstr "はい" msgstr "はい"
#: contrib/admin/filterspecs.py:143 newforms/widgets.py:170 #: contrib/admin/filterspecs.py:143 newforms/widgets.py:170
#: oldforms/__init__.py:572 #: oldforms/__init__.py:577
msgid "No" msgid "No"
msgstr "いいえ" msgstr "いいえ"
#: contrib/admin/filterspecs.py:150 newforms/widgets.py:170 #: contrib/admin/filterspecs.py:150 newforms/widgets.py:170
#: oldforms/__init__.py:572 #: oldforms/__init__.py:577
msgid "Unknown" msgid "Unknown"
msgstr "不明" msgstr "不明"
@ -568,7 +580,8 @@ msgstr "確認のため、再度パスワードを入力してください。"
#: contrib/admin/templates/admin/auth/user/change_password.html:28 #: contrib/admin/templates/admin/auth/user/change_password.html:28
#, python-format #, python-format
msgid "Enter a new password for the user <strong>%(username)s</strong>." msgid "Enter a new password for the user <strong>%(username)s</strong>."
msgstr "<strong>%(username)s</strong>さんの新しいパスワードを入力してください。" msgstr ""
"<strong>%(username)s</strong>さんの新しいパスワードを入力してください。"
#: contrib/admin/templates/admin_doc/bookmarklets.html:3 #: contrib/admin/templates/admin_doc/bookmarklets.html:3
msgid "Bookmarklets" msgid "Bookmarklets"
@ -602,7 +615,6 @@ msgstr ""
msgid "Documentation for this page" msgid "Documentation for this page"
msgstr "このページのドキュメント" msgstr "このページのドキュメント"
# TODO
#: contrib/admin/templates/admin_doc/bookmarklets.html:20 #: contrib/admin/templates/admin_doc/bookmarklets.html:20
msgid "" msgid ""
"Jumps you from any page to the documentation for the view that generates " "Jumps you from any page to the documentation for the view that generates "
@ -769,7 +781,7 @@ msgstr "現在:"
msgid "Change:" msgid "Change:"
msgstr "変更:" msgstr "変更:"
#: contrib/admin/templatetags/admin_list.py:238 #: contrib/admin/templatetags/admin_list.py:247
msgid "All dates" msgid "All dates"
msgstr "いつでも" msgstr "いつでも"
@ -850,13 +862,13 @@ msgstr "アプリケーション %r が見つかりません"
#: contrib/admin/views/doc.py:171 #: contrib/admin/views/doc.py:171
#, python-format #, python-format
msgid "Model %r not found in app %r" msgid "Model %(name)r not found in app %(label)r"
msgstr "モデル %r が %r アプリケーションに見つかりません" msgstr "モデル %(name)r が %(label)r アプリケーションに見つかりません"
#: contrib/admin/views/doc.py:183 #: contrib/admin/views/doc.py:183
#, python-format #, python-format
msgid "the related `%s.%s` object" msgid "the related `%(label)s.%(type)s` object"
msgstr "`%s.%s` (関連オブジェクト)" msgstr "`%(label)s.%(type)s` (関連オブジェクト)"
#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205 #: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205
#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224 #: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224
@ -865,8 +877,8 @@ msgstr "モデル :"
#: contrib/admin/views/doc.py:214 #: contrib/admin/views/doc.py:214
#, python-format #, python-format
msgid "related `%s.%s` objects" msgid "related `%(label)s.%(name)s` objects"
msgstr "`%s.%s` (関連オブジェクト)" msgstr "`%(label)s.%(name)s` (関連オブジェクト)"
#: contrib/admin/views/doc.py:219 #: contrib/admin/views/doc.py:219
#, python-format #, python-format
@ -984,7 +996,7 @@ msgid "Added %s."
msgstr "%s を追加しました。" msgstr "%s を追加しました。"
#: contrib/admin/views/main.py:335 contrib/admin/views/main.py:337 #: contrib/admin/views/main.py:335 contrib/admin/views/main.py:337
#: contrib/admin/views/main.py:339 db/models/manipulators.py:306 #: contrib/admin/views/main.py:339 db/models/manipulators.py:308
msgid "and" msgid "and"
msgstr "と" msgstr "と"
@ -1018,41 +1030,41 @@ msgstr "%(name)s \"%(obj)s\" を追加しました。続けて編集できます
msgid "Change %s" msgid "Change %s"
msgstr "%s を変更" msgstr "%s を変更"
#: contrib/admin/views/main.py:473 #: contrib/admin/views/main.py:476
#, python-format #, python-format
msgid "One or more %(fieldname)s in %(name)s: %(obj)s" msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
msgstr "%(name)s に %(fieldname)s が一つ以上あります: %(obj)s" msgstr "%(name)s に %(fieldname)s が一つ以上あります: %(obj)s"
#: contrib/admin/views/main.py:478 #: contrib/admin/views/main.py:481
#, python-format #, python-format
msgid "One or more %(fieldname)s in %(name)s:" msgid "One or more %(fieldname)s in %(name)s:"
msgstr "%(name)s に %(fieldname)s が一つ以上あります:" msgstr "%(name)s に %(fieldname)s が一つ以上あります:"
#: contrib/admin/views/main.py:511 #: contrib/admin/views/main.py:514
#, python-format #, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr "%(name)s \"%(obj)s\" を削除しました。" msgstr "%(name)s \"%(obj)s\" を削除しました。"
#: contrib/admin/views/main.py:514 #: contrib/admin/views/main.py:517
msgid "Are you sure?" msgid "Are you sure?"
msgstr "よろしいですか?" msgstr "よろしいですか?"
#: contrib/admin/views/main.py:536 #: contrib/admin/views/main.py:539
#, python-format #, python-format
msgid "Change history: %s" msgid "Change history: %s"
msgstr "変更履歴: %s" msgstr "変更履歴: %s"
#: contrib/admin/views/main.py:570 #: contrib/admin/views/main.py:573
#, python-format #, python-format
msgid "Select %s" msgid "Select %s"
msgstr "%s を選択" msgstr "%s を選択"
#: contrib/admin/views/main.py:570 #: contrib/admin/views/main.py:573
#, python-format #, python-format
msgid "Select %s to change" msgid "Select %s to change"
msgstr "変更する %s を選択" msgstr "変更する %s を選択"
#: contrib/admin/views/main.py:758 #: contrib/admin/views/main.py:768
msgid "Database error" msgid "Database error"
msgstr "データベースエラー" msgstr "データベースエラー"
@ -1147,8 +1159,8 @@ msgid ""
"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change " "Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
"password form</a>." "password form</a>."
msgstr "" msgstr ""
"'[algo]$[salt]$[hexdigest]'形式か、" "'[algo]$[salt]$[hexdigest]'形式か、<a href=\"password/\">パスワード変更フォー"
"<a href=\"password/\">パスワード変更フォーム</a>を使ってください。" "ム</a>を使ってください。"
#: contrib/auth/models.py:95 #: contrib/auth/models.py:95
msgid "staff status" msgid "staff status"
@ -1517,15 +1529,15 @@ msgstr "コメント ID が不正です"
msgid "No voting for yourself" msgid "No voting for yourself"
msgstr "自分には投票できません。" msgstr "自分には投票できません。"
#: contrib/contenttypes/models.py:26 #: contrib/contenttypes/models.py:36
msgid "python model class name" msgid "python model class name"
msgstr "Python モデルクラス名" msgstr "Python モデルクラス名"
#: contrib/contenttypes/models.py:29 #: contrib/contenttypes/models.py:39
msgid "content type" msgid "content type"
msgstr "コンテンツタイプ" msgstr "コンテンツタイプ"
#: contrib/contenttypes/models.py:30 #: contrib/contenttypes/models.py:40
msgid "content types" msgid "content types"
msgstr "コンテンツタイプ" msgstr "コンテンツタイプ"
@ -1575,7 +1587,281 @@ msgstr "フラットページ"
msgid "flat pages" msgid "flat pages"
msgstr "フラットページ" msgstr "フラットページ"
#: contrib/localflavor/usa/forms.py:13 #: contrib/humanize/templatetags/humanize.py:17
msgid "th"
msgstr "番目"
#: contrib/humanize/templatetags/humanize.py:17
msgid "st"
msgstr "番目"
#: contrib/humanize/templatetags/humanize.py:17
msgid "nd"
msgstr "番目"
#: contrib/humanize/templatetags/humanize.py:17
msgid "rd"
msgstr "番目"
#: contrib/humanize/templatetags/humanize.py:47
#, python-format
msgid "%(value).1f million"
msgid_plural "%(value).1f million"
msgstr[0] "%(value).1f 百万"
msgstr[1] "%(value).1f 百万"
#: contrib/humanize/templatetags/humanize.py:50
#, python-format
msgid "%(value).1f billion"
msgid_plural "%(value).1f billion"
msgstr[0] "%(value).1f 十億"
msgstr[1] "%(value).1f 十億"
#: contrib/humanize/templatetags/humanize.py:53
#, python-format
msgid "%(value).1f trillion"
msgid_plural "%(value).1f trillion"
msgstr[0] "%(value).1f 兆"
msgstr[1] "%(value).1f 兆"
#: contrib/humanize/templatetags/humanize.py:68
msgid "one"
msgstr "1"
#: contrib/humanize/templatetags/humanize.py:68
msgid "two"
msgstr "2"
#: contrib/humanize/templatetags/humanize.py:68
msgid "three"
msgstr "3"
#: contrib/humanize/templatetags/humanize.py:68
msgid "four"
msgstr "4"
#: contrib/humanize/templatetags/humanize.py:68
msgid "five"
msgstr "5"
#: contrib/humanize/templatetags/humanize.py:68
msgid "six"
msgstr "6"
#: contrib/humanize/templatetags/humanize.py:68
msgid "seven"
msgstr "7"
#: contrib/humanize/templatetags/humanize.py:68
msgid "eight"
msgstr "8"
#: contrib/humanize/templatetags/humanize.py:68
msgid "nine"
msgstr "9"
#: contrib/localflavor/fr/forms.py:17
#, fuzzy
msgid "Enter a zip code in the format XXXXX."
msgstr "XXXXXの形式でZipコードを入力してください。"
#: contrib/localflavor/jp/forms.py:21
msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
msgstr "XXXXXか、XXXXX-XXXXの形式で郵便番号を入力してください。"
#: contrib/localflavor/jp/jp_prefectures.py:4
msgid "Hokkaido"
msgstr "北海道"
#: contrib/localflavor/jp/jp_prefectures.py:5
msgid "Aomori"
msgstr "青森県"
#: contrib/localflavor/jp/jp_prefectures.py:6
msgid "Iwate"
msgstr "岩手県"
#: contrib/localflavor/jp/jp_prefectures.py:7
msgid "Miyagi"
msgstr "宮城県"
#: contrib/localflavor/jp/jp_prefectures.py:8
msgid "Akita"
msgstr "秋田県"
#: contrib/localflavor/jp/jp_prefectures.py:9
msgid "Yamagata"
msgstr "山形県"
#: contrib/localflavor/jp/jp_prefectures.py:10
msgid "Fukushima"
msgstr "福島県"
#: contrib/localflavor/jp/jp_prefectures.py:11
msgid "Ibaraki"
msgstr "茨城県"
#: contrib/localflavor/jp/jp_prefectures.py:12
msgid "Tochigi"
msgstr "栃木県"
#: contrib/localflavor/jp/jp_prefectures.py:13
msgid "Gunma"
msgstr "群馬県"
#: contrib/localflavor/jp/jp_prefectures.py:14
msgid "Saitama"
msgstr "埼玉県"
#: contrib/localflavor/jp/jp_prefectures.py:15
msgid "Chiba"
msgstr "千葉県"
#: contrib/localflavor/jp/jp_prefectures.py:16
msgid "Tokyo"
msgstr "東京都"
#: contrib/localflavor/jp/jp_prefectures.py:17
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/uk/forms.py:18
msgid "Enter a postcode. A space is required between the two postcode parts."
msgstr "ポスタルコードを入力してください。コードとコードの間は半角のスペースで区切ってください。"
#: contrib/localflavor/usa/forms.py:17
msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
msgstr "XXXXXか、XXXXX-XXXXの形式で郵便番号を入力してください。" msgstr "XXXXXか、XXXXX-XXXXの形式で郵便番号を入力してください。"
@ -1607,23 +1893,23 @@ msgstr "リダイレクト"
msgid "redirects" msgid "redirects"
msgstr "リダイレクト" msgstr "リダイレクト"
#: contrib/sessions/models.py:51 #: contrib/sessions/models.py:68
msgid "session key" msgid "session key"
msgstr "セッションキー" msgstr "セッションキー"
#: contrib/sessions/models.py:52 #: contrib/sessions/models.py:69
msgid "session data" msgid "session data"
msgstr "セッションデータ" msgstr "セッションデータ"
#: contrib/sessions/models.py:53 #: contrib/sessions/models.py:70
msgid "expire date" msgid "expire date"
msgstr "有効期限" msgstr "有効期限"
#: contrib/sessions/models.py:57 #: contrib/sessions/models.py:74
msgid "session" msgid "session"
msgstr "セッション" msgstr "セッション"
#: contrib/sessions/models.py:58 #: contrib/sessions/models.py:75
msgid "sessions" msgid "sessions"
msgstr "セッション" msgstr "セッション"
@ -1704,31 +1990,31 @@ msgstr "1900年以降を指定してください。"
#: core/validators.py:143 #: core/validators.py:143
#, python-format #, python-format
msgid "Invalid date: %s." msgid "Invalid date: %s"
msgstr "無効な日付: %s" msgstr "無効な日付: %s"
#: core/validators.py:147 db/models/fields/__init__.py:454 #: core/validators.py:148 db/models/fields/__init__.py:457
msgid "Enter a valid date in YYYY-MM-DD format." msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "YYYY-MM-DD形式で日付を入力してください。" msgstr "YYYY-MM-DD形式で日付を入力してください。"
#: core/validators.py:152 #: core/validators.py:153
msgid "Enter a valid time in HH:MM format." msgid "Enter a valid time in HH:MM format."
msgstr "HH:MM形式で時刻を入力してください。" msgstr "HH:MM形式で時刻を入力してください。"
#: core/validators.py:156 db/models/fields/__init__.py:521 #: core/validators.py:157 db/models/fields/__init__.py:526
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr "YYYY-MM-DD HH:MM形式で日時を入力してください。" msgstr "YYYY-MM-DD HH:MM形式で日時を入力してください。"
#: core/validators.py:161 newforms/fields.py:269 #: core/validators.py:162 newforms/fields.py:269
msgid "Enter a valid e-mail address." msgid "Enter a valid e-mail address."
msgstr "有効なメールアドレスを入力してください。" msgstr "有効なメールアドレスを入力してください。"
#: core/validators.py:173 core/validators.py:442 oldforms/__init__.py:667 #: core/validators.py:174 core/validators.py:445 oldforms/__init__.py:672
msgid "No file was submitted. Check the encoding type on the form." msgid "No file was submitted. Check the encoding type on the form."
msgstr "" msgstr ""
"ファイルが取得できませんでした。formのencoding typeを確認してください。" "ファイルが取得できませんでした。formのencoding typeを確認してください。"
#: core/validators.py:177 #: core/validators.py:178
msgid "" msgid ""
"Upload a valid image. The file you uploaded was either not an image or a " "Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image." "corrupted image."
@ -1736,26 +2022,26 @@ msgstr ""
"画像をアップロードしてください。アップロードした画像は画像でないか、または壊" "画像をアップロードしてください。アップロードした画像は画像でないか、または壊"
"れています。" "れています。"
#: core/validators.py:184 #: core/validators.py:185
#, python-format #, python-format
msgid "The URL %s does not point to a valid image." msgid "The URL %s does not point to a valid image."
msgstr "URL ( %s ) は画像ではありません。" msgstr "URL ( %s ) は画像ではありません。"
#: core/validators.py:188 #: core/validators.py:189
#, python-format #, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr "電話番号は XXX-XXX-XXXX 形式で入力してください。\"%s\" は無効です。" msgstr "電話番号は XXX-XXX-XXXX 形式で入力してください。\"%s\" は無効です。"
#: core/validators.py:196 #: core/validators.py:197
#, python-format #, python-format
msgid "The URL %s does not point to a valid QuickTime video." msgid "The URL %s does not point to a valid QuickTime video."
msgstr "URL ( %s ) は QuickTime ビデオではありません。" msgstr "URL ( %s ) は QuickTime ビデオではありません。"
#: core/validators.py:200 #: core/validators.py:201
msgid "A valid URL is required." msgid "A valid URL is required."
msgstr "正しい URL を入力してください。" msgstr "正しい URL を入力してください。"
#: core/validators.py:214 #: core/validators.py:215
#, python-format #, python-format
msgid "" msgid ""
"Valid HTML is required. Specific errors are:\n" "Valid HTML is required. Specific errors are:\n"
@ -1764,86 +2050,86 @@ msgstr ""
"有効な HTML を入力してください。エラー:\n" "有効な HTML を入力してください。エラー:\n"
"%s" "%s"
#: core/validators.py:221 #: core/validators.py:222
#, python-format #, python-format
msgid "Badly formed XML: %s" msgid "Badly formed XML: %s"
msgstr "不正な XML です: %s" msgstr "不正な XML です: %s"
#: core/validators.py:238 #: core/validators.py:239
#, python-format #, python-format
msgid "Invalid URL: %s" msgid "Invalid URL: %s"
msgstr "無効なURL: %s" msgstr "無効なURL: %s"
#: core/validators.py:243 core/validators.py:245 #: core/validators.py:244 core/validators.py:246
#, python-format #, python-format
msgid "The URL %s is a broken link." msgid "The URL %s is a broken link."
msgstr "URL ( %s ) はリンクが壊れています。" msgstr "URL ( %s ) はリンクが壊れています。"
#: core/validators.py:251 #: core/validators.py:252
msgid "Enter a valid U.S. state abbreviation." msgid "Enter a valid U.S. state abbreviation."
msgstr "正しい米州略称を入力してください。" msgstr "正しい米州略称を入力してください。"
#: core/validators.py:265 #: core/validators.py:266
#, python-format #, python-format
msgid "Watch your mouth! The word %s is not allowed here." msgid "Watch your mouth! The word %s is not allowed here."
msgid_plural "Watch your mouth! The words %s are not allowed here." msgid_plural "Watch your mouth! The words %s are not allowed here."
msgstr[0] "言葉使いに気を付けて! %s という言葉は使えません。" msgstr[0] "言葉使いに気を付けて! %s という言葉は使えません。"
msgstr[1] "言葉使いに気を付けて! %s という言葉は使えません。" msgstr[1] "言葉使いに気を付けて! %s という言葉は使えません。"
#: core/validators.py:272 #: core/validators.py:273
#, python-format #, python-format
msgid "This field must match the '%s' field." msgid "This field must match the '%s' field."
msgstr "このフィールドは '%s' フィールドと一致せねばなりません。" msgstr "このフィールドは '%s' フィールドと一致せねばなりません。"
#: core/validators.py:291 #: core/validators.py:292
msgid "Please enter something for at least one field." msgid "Please enter something for at least one field."
msgstr "少なくとも一つのフィールドに何か入力してください。" msgstr "少なくとも一つのフィールドに何か入力してください。"
#: core/validators.py:300 core/validators.py:311 #: core/validators.py:301 core/validators.py:312
msgid "Please enter both fields or leave them both empty." msgid "Please enter both fields or leave them both empty."
msgstr "両方のフィールドに入力するか、両方とも未入力にしてください。" msgstr "両方のフィールドに入力するか、両方とも未入力にしてください。"
#: core/validators.py:318 #: core/validators.py:320
#, python-format #, python-format
msgid "This field must be given if %(field)s is %(value)s" msgid "This field must be given if %(field)s is %(value)s"
msgstr "" msgstr ""
"%(field)s を %(value)s にするのなら、このフィールドに必ず入力してください。" "%(field)s を %(value)s にするのなら、このフィールドに必ず入力してください。"
#: core/validators.py:330 #: core/validators.py:333
#, python-format #, python-format
msgid "This field must be given if %(field)s is not %(value)s" msgid "This field must be given if %(field)s is not %(value)s"
msgstr "" msgstr ""
"%(field)s を %(value)s にしないのなら、このフィールドに必ず入力してください。" "%(field)s を %(value)s にしないのなら、このフィールドに必ず入力してください。"
#: core/validators.py:349 #: core/validators.py:352
msgid "Duplicate values are not allowed." msgid "Duplicate values are not allowed."
msgstr "重複する値は認められません。" msgstr "重複する値は認められません。"
#: core/validators.py:364 #: core/validators.py:367
#, python-format #, python-format
msgid "This value must be between %s and %s." msgid "This value must be between %(lower)s and %(upper)s."
msgstr "この値は %s から %s の間でなければなりません。" msgstr "この値は %(lower)s から %(upper)s の間でなければなりません。"
#: core/validators.py:366 #: core/validators.py:369
#, python-format #, python-format
msgid "This value must be at least %s." msgid "This value must be at least %s."
msgstr "この値は %s 以上でなければなりません。" msgstr "この値は %s 以上でなければなりません。"
#: core/validators.py:368 #: core/validators.py:371
#, python-format #, python-format
msgid "This value must be no more than %s." msgid "This value must be no more than %s."
msgstr "この値は %s より小さくなければなりません。" msgstr "この値は %s より小さくなければなりません。"
#: core/validators.py:404 #: core/validators.py:407
#, python-format #, python-format
msgid "This value must be a power of %s." msgid "This value must be a power of %s."
msgstr "この値は %s の累乗でなければなりません。" msgstr "この値は %s の累乗でなければなりません。"
#: core/validators.py:415 #: core/validators.py:418
msgid "Please enter a valid decimal number." msgid "Please enter a valid decimal number."
msgstr "有効な 10 進数を入力してください。" msgstr "有効な 10 進数を入力してください。"
#: core/validators.py:419 #: core/validators.py:422
#, python-format #, python-format
msgid "Please enter a valid decimal number with at most %s total digit." msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural "" msgid_plural ""
@ -1851,7 +2137,7 @@ msgid_plural ""
msgstr[0] "全体で %s 文字以下の数字を入力してください。" msgstr[0] "全体で %s 文字以下の数字を入力してください。"
msgstr[1] "全体で %s 文字以下の数字を入力してください。" msgstr[1] "全体で %s 文字以下の数字を入力してください。"
#: core/validators.py:422 #: core/validators.py:425
#, python-format #, python-format
msgid "" 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 digit."
@ -1860,7 +2146,7 @@ msgid_plural ""
msgstr[0] "整数部は %s 文字以下の数字を入力してください。" msgstr[0] "整数部は %s 文字以下の数字を入力してください。"
msgstr[1] "整数部は %s 文字以下の数字を入力してください。" msgstr[1] "整数部は %s 文字以下の数字を入力してください。"
#: core/validators.py:425 #: core/validators.py:428
#, python-format #, python-format
msgid "Please enter a valid decimal number with at most %s decimal place." msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural "" msgid_plural ""
@ -1868,37 +2154,37 @@ msgid_plural ""
msgstr[0] "小数部は %s 文字以下の数字を入力してください。" msgstr[0] "小数部は %s 文字以下の数字を入力してください。"
msgstr[1] "小数部は %s 文字以下の数字を入力してください。" msgstr[1] "小数部は %s 文字以下の数字を入力してください。"
#: core/validators.py:435 #: core/validators.py:438
#, python-format #, python-format
msgid "Make sure your uploaded file is at least %s bytes big." msgid "Make sure your uploaded file is at least %s bytes big."
msgstr "アップロードするファイルの大きさは %s バイト以上にしてください。" msgstr "アップロードするファイルの大きさは %s バイト以上にしてください。"
#: core/validators.py:436 #: core/validators.py:439
#, python-format #, python-format
msgid "Make sure your uploaded file is at most %s bytes big." msgid "Make sure your uploaded file is at most %s bytes big."
msgstr "アップロードするファイルの大きさは %s 最大バイトまでです。" msgstr "アップロードするファイルの大きさは %s 最大バイトまでです。"
#: core/validators.py:453 #: core/validators.py:456
msgid "The format for this field is wrong." msgid "The format for this field is wrong."
msgstr "フィールドの形式が正しくありません。" msgstr "フィールドの形式が正しくありません。"
#: core/validators.py:468 #: core/validators.py:471
msgid "This field is invalid." msgid "This field is invalid."
msgstr "このフィールドは無効です。" msgstr "このフィールドは無効です。"
#: core/validators.py:504 #: core/validators.py:507
#, python-format #, python-format
msgid "Could not retrieve anything from %s." msgid "Could not retrieve anything from %s."
msgstr "%s から何も検索できませんでした。" msgstr "%s から何も検索できませんでした。"
#: core/validators.py:507 #: core/validators.py:510
#, python-format #, python-format
msgid "" msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr "" msgstr ""
"URL %(url)s は無効なコンテンツタイプヘッダ '%(contenttype)s' を返しました。" "URL %(url)s は無効なコンテンツタイプヘッダ '%(contenttype)s' を返しました。"
#: core/validators.py:540 #: core/validators.py:543
#, python-format #, python-format
msgid "" msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
@ -1907,7 +2193,7 @@ msgstr ""
"%(line)s 行目から始まる %(tag)s タグを閉じてください (\"%(start)s\" で始まる" "%(line)s 行目から始まる %(tag)s タグを閉じてください (\"%(start)s\" で始まる"
"行です)。" "行です)。"
#: core/validators.py:544 #: core/validators.py:547
#, python-format #, python-format
msgid "" msgid ""
"Some text starting on line %(line)s is not allowed in that context. (Line " "Some text starting on line %(line)s is not allowed in that context. (Line "
@ -1916,7 +2202,7 @@ msgstr ""
"%(line)s 行目から始まるテキストはこのコンテキストでは使えません。 (\"%(start)" "%(line)s 行目から始まるテキストはこのコンテキストでは使えません。 (\"%(start)"
"s\" で始まる行です)。" "s\" で始まる行です)。"
#: core/validators.py:549 #: core/validators.py:552
#, python-format #, python-format
msgid "" msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
@ -1925,7 +2211,7 @@ msgstr ""
"%(line)s 行目の \"%(attr)s\" は無効なアトリビュートです (\"%(start)s\" で始ま" "%(line)s 行目の \"%(attr)s\" は無効なアトリビュートです (\"%(start)s\" で始ま"
"る行です)。" "る行です)。"
#: core/validators.py:554 #: core/validators.py:557
#, python-format #, python-format
msgid "" msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
@ -1934,7 +2220,7 @@ msgstr ""
"%(line)s 行目の \"<%(tag)s>\" は無効なタグです( \"%(start)s\" で始まる行で" "%(line)s 行目の \"<%(tag)s>\" は無効なタグです( \"%(start)s\" で始まる行で"
"す)。" "す)。"
#: core/validators.py:558 #: core/validators.py:561
#, python-format #, python-format
msgid "" msgid ""
"A tag on line %(line)s is missing one or more required attributes. (Line " "A tag on line %(line)s is missing one or more required attributes. (Line "
@ -1943,7 +2229,7 @@ msgstr ""
"%(line)s 行目のタグは必須アトリビュートが未入力です( \"%(start)s\" で始まる行" "%(line)s 行目のタグは必須アトリビュートが未入力です( \"%(start)s\" で始まる行"
"です)。" "です)。"
#: core/validators.py:563 #: core/validators.py:566
#, python-format #, python-format
msgid "" msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
@ -1952,7 +2238,7 @@ msgstr ""
"%(line)s 行目の \"%(attr)s\" アトリビュートの値が正しくありません (\"%(start)" "%(line)s 行目の \"%(attr)s\" アトリビュートの値が正しくありません (\"%(start)"
"s\" で始まる行です) 。" "s\" で始まる行です) 。"
#: db/models/manipulators.py:305 #: db/models/manipulators.py:307
#, python-format #, python-format
msgid "%(object)s with this %(type)s already exists for the given %(field)s." msgid "%(object)s with this %(type)s already exists for the given %(field)s."
msgstr "" msgstr ""
@ -1963,29 +2249,33 @@ msgstr ""
msgid "%(optname)s with this %(fieldname)s already exists." msgid "%(optname)s with this %(fieldname)s already exists."
msgstr "%(fieldname)s に %(optname)s は既に存在します。" msgstr "%(fieldname)s に %(optname)s は既に存在します。"
#: db/models/fields/__init__.py:116 db/models/fields/__init__.py:273 #: db/models/fields/__init__.py:117 db/models/fields/__init__.py:274
#: db/models/fields/__init__.py:605 db/models/fields/__init__.py:616 #: db/models/fields/__init__.py:610 db/models/fields/__init__.py:621
#: newforms/fields.py:78 newforms/fields.py:373 newforms/fields.py:449 #: newforms/fields.py:78 newforms/fields.py:374 newforms/fields.py:450
#: newforms/fields.py:460 oldforms/__init__.py:352 #: newforms/fields.py:461 newforms/models.py:177 oldforms/__init__.py:357
msgid "This field is required." msgid "This field is required."
msgstr "このフィールドは必須です。" msgstr "このフィールドは必須です。"
#: db/models/fields/__init__.py:366 #: db/models/fields/__init__.py:367
msgid "This value must be an integer." msgid "This value must be an integer."
msgstr "値は整数でなければなりません。" msgstr "値は整数でなければなりません。"
#: db/models/fields/__init__.py:401 #: db/models/fields/__init__.py:402
msgid "This value must be either True or False." msgid "This value must be either True or False."
msgstr "値は真: True または偽: False でなければなりません。" msgstr "値は真: True または偽: False でなければなりません。"
#: db/models/fields/__init__.py:422 #: db/models/fields/__init__.py:423
msgid "This field cannot be null." msgid "This field cannot be null."
msgstr "このフィールドには NULL を指定できません。" msgstr "このフィールドには NULL を指定できません。"
#: db/models/fields/__init__.py:625 #: db/models/fields/__init__.py:630
msgid "Enter a valid filename." msgid "Enter a valid filename."
msgstr "正しいファイル名を入力してください。" msgstr "正しいファイル名を入力してください。"
#: db/models/fields/__init__.py:751
msgid "This value must be either None, True or False."
msgstr "値は、空: None、真: True または偽: False でなければなりません。"
#: db/models/fields/related.py:53 #: db/models/fields/related.py:53
#, python-format #, python-format
msgid "Please enter a valid %s." msgid "Please enter a valid %s."
@ -2054,55 +2344,79 @@ msgstr "URLを正しく入力してください。"
msgid "This URL appears to be a broken link." msgid "This URL appears to be a broken link."
msgstr "このURLはリンクが壊れています。" msgstr "このURLはリンクが壊れています。"
#: newforms/fields.py:359 #: newforms/fields.py:360 newforms/models.py:164
msgid "Select a valid choice. That choice is not one of the available choices." msgid "Select a valid choice. That choice is not one of the available choices."
msgstr "正しく選択してください。選択したものは候補にありません。" msgstr "正しく選択してください。選択したものは候補にありません。"
#: newforms/fields.py:377 newforms/fields.py:453 #: newforms/fields.py:378 newforms/fields.py:454 newforms/models.py:181
msgid "Enter a list of values." msgid "Enter a list of values."
msgstr "リストを入力してください。" msgstr "リストを入力してください。"
#: newforms/fields.py:386 #: newforms/fields.py:387 newforms/models.py:187
#, python-format #, python-format
msgid "Select a valid choice. %s is not one of the available choices." msgid "Select a valid choice. %s is not one of the available choices."
msgstr "正しく選択してください。 %s は候補にありません。" msgstr "正しく選択してください。 %s は候補にありません。"
#: oldforms/__init__.py:387 #: oldforms/__init__.py:392
#, python-format #, python-format
msgid "Ensure your text is less than %s character." msgid "Ensure your text is less than %s character."
msgid_plural "Ensure your text is less than %s characters." msgid_plural "Ensure your text is less than %s characters."
msgstr[0] "%s 字以下で入力してください。" msgstr[0] "%s 字以下で入力してください。"
msgstr[1] "%s 字以下で入力してください。" msgstr[1] "%s 字以下で入力してください。"
#: oldforms/__init__.py:392 #: oldforms/__init__.py:397
msgid "Line breaks are not allowed here." msgid "Line breaks are not allowed here."
msgstr "改行はできません。" msgstr "改行はできません。"
#: oldforms/__init__.py:493 oldforms/__init__.py:566 oldforms/__init__.py:605 #: oldforms/__init__.py:498 oldforms/__init__.py:571 oldforms/__init__.py:610
#, python-format #, python-format
msgid "Select a valid choice; '%(data)s' is not in %(choices)s." msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
msgstr "正しく選択してください。; '%(data)s' は %(choices)s にありません。" msgstr "正しく選択してください。; '%(data)s' は %(choices)s にありません。"
#: oldforms/__init__.py:669 #: oldforms/__init__.py:674
msgid "The submitted file is empty." msgid "The submitted file is empty."
msgstr "入力されたファイルは空です。" msgstr "入力されたファイルは空です。"
#: oldforms/__init__.py:725 #: oldforms/__init__.py:730
msgid "Enter a whole number between -32,768 and 32,767." msgid "Enter a whole number between -32,768 and 32,767."
msgstr "-32,768 から 32,767 までの整数を入力してください。" msgstr "-32,768 から 32,767 までの整数を入力してください。"
#: oldforms/__init__.py:735 #: oldforms/__init__.py:740
msgid "Enter a positive number." msgid "Enter a positive number."
msgstr "正の数を入力してください。" msgstr "正の数を入力してください。"
#: oldforms/__init__.py:745 #: oldforms/__init__.py:750
msgid "Enter a whole number between 0 and 32,767." msgid "Enter a whole number between 0 and 32,767."
msgstr "0 から 32,767 までの整数を入力してください。" msgstr "0 から 32,767 までの整数を入力してください。"
#: template/defaultfilters.py:436 #: template/defaultfilters.py:491
msgid "yes,no,maybe" msgid "yes,no,maybe"
msgstr "はい,いいえ,たぶん" 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 "0時"
#: utils/dateformat.py:97
msgid "noon"
msgstr "12時"
#: utils/dates.py:6 #: utils/dates.py:6
msgid "Monday" msgid "Monday"
msgstr "月曜日" msgstr "月曜日"

View File

@ -1,14 +1,12 @@
# SOME DESCRIPTIVE TITLE. # Japanese translation for js.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # Copyright (C) 2005 makoto tsuyuki
# This file is distributed under the same license as the PACKAGE package. # This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # makoto tsuyuki <mtsuyuki@gmail.com>, 2005.
#
#, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Django 1.0\n" "Project-Id-Version: Django 1.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-10-06 00:30+0900\n" "POT-Creation-Date: 2007-03-26 23:41+0900\n"
"PO-Revision-Date: 2006-05-08 13:39+0900\n" "PO-Revision-Date: 2006-05-08 13:39+0900\n"
"Last-Translator: makoto tsuyuki <mtsuyuki@gmail.com>\n" "Last-Translator: makoto tsuyuki <mtsuyuki@gmail.com>\n"
"Language-Team: Japanese <django-ja@googlegroups.com>\n" "Language-Team: Japanese <django-ja@googlegroups.com>\n"
@ -85,7 +83,7 @@ msgstr "時間を選択"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
msgid "Midnight" msgid "Midnight"
msgstr "夜中" msgstr "0時"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
msgid "6 a.m." msgid "6 a.m."
@ -93,7 +91,7 @@ msgstr "午前 6 時"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
msgid "Noon" msgid "Noon"
msgstr "正午" msgstr "12時"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:183

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -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-04-06 11:10+0900\n"
"PO-Revision-Date: 2007-04-06 11:15+0900\n"
"Last-Translator: Hyun Mi Ae <happyhyun@gmail.com>\n"
"Language-Team: Korean\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: contrib/admin/media/js/calendar.js:24
#: contrib/admin/media/js/dateparse.js:32
msgid ""
"January February March April May June July August September October November "
"December"
msgstr "1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월"
#: contrib/admin/media/js/calendar.js:25
msgid "S M T W T F S"
msgstr "일 월 화 수 목 금 토"
#: contrib/admin/media/js/dateparse.js:33
msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
msgstr "일요일 월요일 화요일 수요일 목요일 금요일 토요일"
#: contrib/admin/media/js/SelectFilter2.js:33
#, perl-format
msgid "Available %s"
msgstr "이용 가능한 %s"
#: contrib/admin/media/js/SelectFilter2.js:41
msgid "Choose all"
msgstr "모두 선택"
#: contrib/admin/media/js/SelectFilter2.js:46
msgid "Add"
msgstr "추가"
#: contrib/admin/media/js/SelectFilter2.js:48
msgid "Remove"
msgstr "삭제"
#: contrib/admin/media/js/SelectFilter2.js:53
#, perl-format
msgid "Chosen %s"
msgstr "선택된 %s"
#: contrib/admin/media/js/SelectFilter2.js:54
msgid "Select your choice(s) and click "
msgstr "선택한 후 클릭하세요"
#: contrib/admin/media/js/SelectFilter2.js:59
msgid "Clear all"
msgstr "모두 삭제"
#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
msgid "Show"
msgstr "보기"
#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
msgid "Hide"
msgstr "감추기"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
msgid "Now"
msgstr "현재"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
msgid "Clock"
msgstr "시계"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
msgid "Choose a time"
msgstr "시간 선택"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
msgid "Midnight"
msgstr "자정"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
msgid "6 a.m."
msgstr "오전 6시"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
msgid "Noon"
msgstr "정오"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
msgid "Cancel"
msgstr "취소"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
msgid "Today"
msgstr "오늘"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
msgid "Calendar"
msgstr "달력"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
msgid "Yesterday"
msgstr "어제"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
msgid "Tomorrow"
msgstr "내일"

File diff suppressed because it is too large Load Diff

View File

@ -10,7 +10,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-15 10:46+1100\n" "POT-Creation-Date: 2007-02-15 10:46+1100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: Gatis Tomsons <gatis.tomsons@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
@ -19,64 +19,65 @@ msgstr ""
#: contrib/admin/media/js/SelectFilter2.js:33 #: contrib/admin/media/js/SelectFilter2.js:33
#, perl-format #, perl-format
msgid "Available %s" msgid "Available %s"
msgstr "" msgstr "Pieejams %s"
#: contrib/admin/media/js/SelectFilter2.js:41 #: contrib/admin/media/js/SelectFilter2.js:41
msgid "Choose all" msgid "Choose all"
msgstr "" msgstr "Izvēlēties visu"
#: contrib/admin/media/js/SelectFilter2.js:46 #: contrib/admin/media/js/SelectFilter2.js:46
msgid "Add" msgid "Add"
msgstr "" msgstr "Pievienot"
#: contrib/admin/media/js/SelectFilter2.js:48 #: contrib/admin/media/js/SelectFilter2.js:48
msgid "Remove" msgid "Remove"
msgstr "" msgstr "Izņemt"
#: contrib/admin/media/js/SelectFilter2.js:53 #: contrib/admin/media/js/SelectFilter2.js:53
#, perl-format #, perl-format
msgid "Chosen %s" msgid "Chosen %s"
msgstr "" msgstr "Izvēlies %s"
#: contrib/admin/media/js/SelectFilter2.js:54 #: contrib/admin/media/js/SelectFilter2.js:54
msgid "Select your choice(s) and click " msgid "Select your choice(s) and click "
msgstr "" msgstr "Izvēlies un klikšķini"
#: contrib/admin/media/js/SelectFilter2.js:59 #: contrib/admin/media/js/SelectFilter2.js:59
msgid "Clear all" msgid "Clear all"
msgstr "" msgstr "Attīrīt visu"
#: contrib/admin/media/js/dateparse.js:32 #: contrib/admin/media/js/dateparse.js:32
#: contrib/admin/media/js/calendar.js:24 #: contrib/admin/media/js/calendar.js:24
msgid "" msgid ""
"January February March April May June July August September October November " "January February March April May June July August September October November "
"December" "December"
msgstr "" msgstr "Janvāris Februāris Marts Aprīlis Maijs Jūnijs Jūlijs Augusts Septembris Oktobris Novembris"
"Decembris"
#: contrib/admin/media/js/dateparse.js:33 #: contrib/admin/media/js/dateparse.js:33
msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
msgstr "" msgstr "Svētdiena Pirmdiena Otrdiena Trešdiena Ceturtdiena Piektdiena Sestdiena"
#: contrib/admin/media/js/calendar.js:25 #: contrib/admin/media/js/calendar.js:25
msgid "S M T W T F S" msgid "S M T W T F S"
msgstr "" msgstr "S M T W T F S"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
msgid "Now" msgid "Now"
msgstr "" msgstr "Tagad"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
msgid "Clock" msgid "Clock"
msgstr "" msgstr "Pulkstens"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
msgid "Choose a time" msgid "Choose a time"
msgstr "" msgstr "Izvēlieties laiku"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
msgid "Midnight" msgid "Midnight"
msgstr "" msgstr "Pusnakts"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
msgid "6 a.m." msgid "6 a.m."
@ -84,35 +85,35 @@ msgstr ""
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
msgid "Noon" msgid "Noon"
msgstr "" msgstr "Pusdienas laiks"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr "Atcelt"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
msgid "Today" msgid "Today"
msgstr "" msgstr "Šodien"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
msgid "Calendar" msgid "Calendar"
msgstr "" msgstr "Kalendārs"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
msgid "Yesterday" msgid "Yesterday"
msgstr "" msgstr "Vakar"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
msgid "Tomorrow" msgid "Tomorrow"
msgstr "" msgstr "Rīt"
#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34 #: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72 #: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
msgid "Show" msgid "Show"
msgstr "" msgstr "Parādīt"
#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63 #: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
msgid "Hide" msgid "Hide"
msgstr "" msgstr "Slēpt"

File diff suppressed because it is too large Load Diff

View File

@ -2202,10 +2202,11 @@ msgstr[0] "dag"
msgstr[1] "dagen" msgstr[1] "dagen"
#: utils/timesince.py:16 #: utils/timesince.py:16
# In the timesince context it is stilistically wrong to use the plural for hour in Dutch.
msgid "hour" msgid "hour"
msgid_plural "hours" msgid_plural "hours"
msgstr[0] "uur" msgstr[0] "uur"
msgstr[1] "uren" msgstr[1] "uur"
#: utils/timesince.py:17 #: utils/timesince.py:17
msgid "minute" msgid "minute"

View File

@ -1,4 +1,4 @@
# SOME DESCRIPTIVE TITLE. # translation of django.po to
# Copyright (C) 2005 and beyond # Copyright (C) 2005 and beyond
# This file is distributed under the same license as the PACKAGE package. # This file is distributed under the same license as the PACKAGE package.
# Espen Grindhaug <espen@grindhaug.org>, Nov 2005. # Espen Grindhaug <espen@grindhaug.org>, Nov 2005.
@ -6,74 +6,73 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-05-16 10:12+0200\n" "POT-Creation-Date: 2006-05-16 10:12+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2007-04-27 06:48+0200\n"
"Last-Translator: Espen Grndhaug <espen@grindhaug.org>\n" "Last-Translator: \n"
"Language-Team: Norwegian\n" "Language-Team: <en@li.org>\n"
"MIME-Version: 1.0\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" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
#: contrib/comments/models.py:67 contrib/comments/models.py:166 #: contrib/comments/models.py:67 contrib/comments/models.py:166
#, fuzzy
msgid "object ID" msgid "object ID"
msgstr "Vis objekt ID" msgstr "objekt ID"
#: contrib/comments/models.py:68 #: contrib/comments/models.py:68
msgid "headline" msgid "headline"
msgstr "" msgstr "overskrift"
#: 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 #: contrib/comments/models.py:167
#, fuzzy
msgid "comment" msgid "comment"
msgstr "innhold" msgstr "kommentar"
#: contrib/comments/models.py:70 #: contrib/comments/models.py:70
msgid "rating #1" msgid "rating #1"
msgstr "" msgstr "rangering #1 "
#: contrib/comments/models.py:71 #: contrib/comments/models.py:71
msgid "rating #2" msgid "rating #2"
msgstr "" msgstr "rangering #2"
#: contrib/comments/models.py:72 #: contrib/comments/models.py:72
msgid "rating #3" msgid "rating #3"
msgstr "" msgstr "rangering #3"
#: contrib/comments/models.py:73 #: contrib/comments/models.py:73
msgid "rating #4" msgid "rating #4"
msgstr "" msgstr "rangering #4"
#: contrib/comments/models.py:74 #: contrib/comments/models.py:74
msgid "rating #5" msgid "rating #5"
msgstr "" msgstr "rangering #5"
#: contrib/comments/models.py:75 #: contrib/comments/models.py:75
msgid "rating #6" msgid "rating #6"
msgstr "" msgstr "rangering #6"
#: contrib/comments/models.py:76 #: contrib/comments/models.py:76
msgid "rating #7" msgid "rating #7"
msgstr "" msgstr "rangering #7"
#: contrib/comments/models.py:77 #: contrib/comments/models.py:77
msgid "rating #8" msgid "rating #8"
msgstr "" msgstr "rangering #8"
#: contrib/comments/models.py:82 #: contrib/comments/models.py:82
msgid "is valid rating" msgid "is valid rating"
msgstr "" msgstr "er gyldig rangering"
#: contrib/comments/models.py:83 contrib/comments/models.py:169 #: contrib/comments/models.py:83 contrib/comments/models.py:169
msgid "date/time submitted" msgid "date/time submitted"
msgstr "" msgstr "dato/tid for innsendelse"
#: contrib/comments/models.py:84 contrib/comments/models.py:170 #: contrib/comments/models.py:84 contrib/comments/models.py:170
msgid "is public" msgid "is public"
msgstr "" msgstr "er tilgjengelig for alle"
#: 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" msgid "IP address"
@ -81,23 +80,21 @@ msgstr "IP adresse"
#: contrib/comments/models.py:86 #: contrib/comments/models.py:86
msgid "is removed" msgid "is removed"
msgstr "" msgstr "er fjernet"
#: contrib/comments/models.py:86 #: contrib/comments/models.py:86
msgid "" msgid ""
"Check this box if the comment is inappropriate. A \"This comment has been " "Check this box if the comment is inappropriate. A \"This comment has been "
"removed\" message will be displayed instead." "removed\" message will be displayed instead."
msgstr "" msgstr "Aktiver denne avkryssningsboksen hvis kommentaren er upasende. Beskjeden \"Denne kommentaren er blitt fjernet\" vil bli vist istedet."
#: contrib/comments/models.py:91 #: contrib/comments/models.py:91
#, fuzzy
msgid "comments" msgid "comments"
msgstr "innhold" msgstr "kommentarer"
#: contrib/comments/models.py:131 contrib/comments/models.py:207 #: contrib/comments/models.py:131 contrib/comments/models.py:207
#, fuzzy
msgid "Content object" msgid "Content object"
msgstr "innholds type" msgstr "innholdsobjekt"
#: contrib/comments/models.py:159 #: contrib/comments/models.py:159
#, python-format #, python-format
@ -108,101 +105,97 @@ msgid ""
"\n" "\n"
"http://%(domain)s%(url)s" "http://%(domain)s%(url)s"
msgstr "" msgstr ""
"Sendt av %(user)s på %(date)s\n"
"\n"
"%(comment)s\n"
"\n"
"http://%(domain)s%(url)s"
#: contrib/comments/models.py:168 #: contrib/comments/models.py:168
#, fuzzy
msgid "person's name" msgid "person's name"
msgstr "fornavn" msgstr "personens navn"
#: contrib/comments/models.py:171 #: contrib/comments/models.py:171
#, fuzzy
msgid "ip address" msgid "ip address"
msgstr "IP adresse" msgstr "IP adresse"
#: contrib/comments/models.py:173 #: contrib/comments/models.py:173
msgid "approved by staff" msgid "approved by staff"
msgstr "" msgstr "godkjent av moderator"
#: contrib/comments/models.py:176 #: contrib/comments/models.py:176
#, fuzzy
msgid "free comment" msgid "free comment"
msgstr "tillat kommentarer" msgstr "åpen kommentar"
#: contrib/comments/models.py:177 #: contrib/comments/models.py:177
#, fuzzy
msgid "free comments" msgid "free comments"
msgstr "tillat kommentarer" msgstr "åpne kommentarer"
#: contrib/comments/models.py:233 #: contrib/comments/models.py:233
msgid "score" msgid "score"
msgstr "" msgstr "poeng"
#: contrib/comments/models.py:234 #: contrib/comments/models.py:234
#, fuzzy
msgid "score date" msgid "score date"
msgstr "utløpsdato" msgstr "poeng dato"
#: contrib/comments/models.py:237 #: contrib/comments/models.py:237
msgid "karma score" msgid "karma score"
msgstr "" msgstr "karma poeng"
#: contrib/comments/models.py:238 #: contrib/comments/models.py:238
msgid "karma scores" msgid "karma scores"
msgstr "" msgstr "karma poeng"
#: contrib/comments/models.py:242 #: contrib/comments/models.py:242
#, python-format #, python-format
msgid "%(score)d rating by %(user)s" msgid "%(score)d rating by %(user)s"
msgstr "" msgstr "%(score)d rangering av %(user)s"
#: contrib/comments/models.py:258 #: contrib/comments/models.py:258
#, fuzzy, python-format #, python-format
msgid "" msgid ""
"This comment was flagged by %(user)s:\n" "This comment was flagged by %(user)s:\n"
"\n" "\n"
"%(text)s" "%(text)s"
msgstr "" msgstr ""
"Denne kommentaren er skrevet med lite omtanke:\n" "Denne kommentaren er flagget av %(user)s:\n"
"\n" "\n"
"%(text)s" "%(text)s"
#: contrib/comments/models.py:265 #: contrib/comments/models.py:265
#, fuzzy
msgid "flag date" msgid "flag date"
msgstr "flatside" msgstr "flagg dato"
#: contrib/comments/models.py:268 #: contrib/comments/models.py:268
#, fuzzy
msgid "user flag" msgid "user flag"
msgstr "Bruker" msgstr "brukerflag"
#: contrib/comments/models.py:269 #: contrib/comments/models.py:269
#, fuzzy
msgid "user flags" msgid "user flags"
msgstr "Brukere" msgstr "brukerflag"
#: contrib/comments/models.py:273 #: contrib/comments/models.py:273
#, python-format #, python-format
msgid "Flag by %r" msgid "Flag by %r"
msgstr "" msgstr "Flagg med %r"
#: contrib/comments/models.py:278 #: contrib/comments/models.py:278
#, fuzzy
msgid "deletion date" msgid "deletion date"
msgstr "sesjon data" msgstr "fjernet dato"
#: contrib/comments/models.py:280 #: contrib/comments/models.py:280
msgid "moderator deletion" msgid "moderator deletion"
msgstr "" msgstr "fjernet av moderator"
#: contrib/comments/models.py:281 #: contrib/comments/models.py:281
msgid "moderator deletions" msgid "moderator deletions"
msgstr "" msgstr "fjernet av moderator"
#: contrib/comments/models.py:285 #: contrib/comments/models.py:285
#, python-format #, python-format
msgid "Moderator deletion by %r" msgid "Moderator deletion by %r"
msgstr "" msgstr "Fjernet av moderator med %r"
#: contrib/comments/views/karma.py:19 #: contrib/comments/views/karma.py:19
msgid "Anonymous users cannot vote" msgid "Anonymous users cannot vote"
@ -214,16 +207,14 @@ msgstr "Ikke gyldig kommentar ID"
#: contrib/comments/views/karma.py:25 #: contrib/comments/views/karma.py:25
msgid "No voting for yourself" msgid "No voting for yourself"
msgstr "Du kan ikke stemme selv" msgstr "Du kan ikke stemme på deg selv"
#: contrib/comments/views/comments.py:28 #: contrib/comments/views/comments.py:28
#, fuzzy msgid "This rating is required because you've entered at least one other rating."
msgid "" msgstr "Denne rangeringen er påkrevd fordi du har rangert en eller flere ting fra før "
"This rating is required because you've entered at least one other rating."
msgstr "Denne bla bla.."
#: contrib/comments/views/comments.py:112 #: contrib/comments/views/comments.py:112
#, fuzzy, python-format #, python-format
msgid "" msgid ""
"This comment was posted by a user who has posted fewer than %(count)s " "This comment was posted by a user who has posted fewer than %(count)s "
"comment:\n" "comment:\n"
@ -246,13 +237,13 @@ msgstr[1] ""
"%(text)s" "%(text)s"
#: contrib/comments/views/comments.py:117 #: contrib/comments/views/comments.py:117
#, fuzzy, python-format #, python-format
msgid "" msgid ""
"This comment was posted by a sketchy user:\n" "This comment was posted by a sketchy user:\n"
"\n" "\n"
"%(text)s" "%(text)s"
msgstr "" msgstr ""
"Denne kommentaren er skrevet med lite omtanke:\n" "Denne kommentaren er skrevet av en upålitelig bruker:\n"
"\n" "\n"
"%(text)s" "%(text)s"
@ -281,8 +272,7 @@ msgstr "Skjemaet hadde en ugyldig verdi - objekt IDen var ugyldig"
#: contrib/comments/views/comments.py:257 #: contrib/comments/views/comments.py:257
#: contrib/comments/views/comments.py:321 #: contrib/comments/views/comments.py:321
msgid "The comment form didn't provide either 'preview' or 'post'" msgid "The comment form didn't provide either 'preview' or 'post'"
msgstr "" msgstr "Kommentar skjemaet returnerte ikke et 'forhåndsvisning' eller 'post' objekt"
"Kommentar skjemaet returnerte ikke et 'forhåndsvisning' eller 'post' objekt"
#: contrib/comments/templates/comments/form.html:6 #: contrib/comments/templates/comments/form.html:6
#: contrib/comments/templates/comments/form.html:8 #: contrib/comments/templates/comments/form.html:8
@ -296,9 +286,8 @@ msgid "Password:"
msgstr "Passord:" msgstr "Passord:"
#: contrib/comments/templates/comments/form.html:6 #: contrib/comments/templates/comments/form.html:6
#, fuzzy
msgid "Forgotten your password?" msgid "Forgotten your password?"
msgstr "Endre passord" msgstr "Har du glemt passordet ditt ?"
#: contrib/comments/templates/comments/form.html:8 #: contrib/comments/templates/comments/form.html:8
#: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/object_history.html:3
@ -323,38 +312,35 @@ msgstr "Log ut"
#: contrib/comments/templates/comments/form.html:12 #: contrib/comments/templates/comments/form.html:12
msgid "Ratings" msgid "Ratings"
msgstr "" msgstr "Rangeringer"
#: contrib/comments/templates/comments/form.html:12 #: contrib/comments/templates/comments/form.html:12
#: contrib/comments/templates/comments/form.html:23 #: contrib/comments/templates/comments/form.html:23
msgid "Required" msgid "Required"
msgstr "" msgstr "Påkrevd"
#: contrib/comments/templates/comments/form.html:12 #: contrib/comments/templates/comments/form.html:12
#: contrib/comments/templates/comments/form.html:23 #: contrib/comments/templates/comments/form.html:23
msgid "Optional" msgid "Optional"
msgstr "" msgstr "Valgfri"
#: contrib/comments/templates/comments/form.html:23 #: contrib/comments/templates/comments/form.html:23
msgid "Post a photo" msgid "Post a photo"
msgstr "" msgstr "Send et foto"
#: contrib/comments/templates/comments/form.html:27 #: contrib/comments/templates/comments/form.html:27
#: contrib/comments/templates/comments/freeform.html:5 #: contrib/comments/templates/comments/freeform.html:5
#, fuzzy
msgid "Comment:" msgid "Comment:"
msgstr "tillat kommentarer" msgstr "Kommentar:"
#: contrib/comments/templates/comments/form.html:32 #: contrib/comments/templates/comments/form.html:32
#: contrib/comments/templates/comments/freeform.html:9 #: contrib/comments/templates/comments/freeform.html:9
#, fuzzy
msgid "Preview comment" msgid "Preview comment"
msgstr "tillat kommentarer" msgstr "Forhåndvis kommentar"
#: contrib/comments/templates/comments/freeform.html:4 #: contrib/comments/templates/comments/freeform.html:4
#, fuzzy
msgid "Your name:" msgid "Your name:"
msgstr "brukernavn" msgstr "Ditt navn:"
#: contrib/admin/filterspecs.py:40 #: contrib/admin/filterspecs.py:40
#, python-format #, python-format
@ -416,7 +402,7 @@ msgstr "objekt repr"
#: contrib/admin/models.py:21 #: contrib/admin/models.py:21
msgid "action flag" msgid "action flag"
msgstr "handlings flagg" msgstr "handlingsflagg"
#: contrib/admin/models.py:22 #: contrib/admin/models.py:22
msgid "change message" msgid "change message"
@ -424,11 +410,11 @@ msgstr "endre melding"
#: contrib/admin/models.py:25 #: contrib/admin/models.py:25
msgid "log entry" msgid "log entry"
msgstr "logg notis" msgstr "logg post"
#: contrib/admin/models.py:26 #: contrib/admin/models.py:26
msgid "log entries" msgid "log entries"
msgstr "logg innlegg" msgstr "logg poster"
#: contrib/admin/templatetags/admin_list.py:228 #: contrib/admin/templatetags/admin_list.py:228
msgid "All dates" msgid "All dates"
@ -440,8 +426,8 @@ msgid ""
"Please enter a correct username and password. Note that both fields are case-" "Please enter a correct username and password. Note that both fields are case-"
"sensitive." "sensitive."
msgstr "" msgstr ""
"Vær snill å angi korrekt brukernavn og passord. La merke til at små og " "Vennligst angi korrekt brukernavn og passord. Merk at små og "
"store bokstaver er betraktet ulik." "store bokstaver er betraktet ulikt."
#: contrib/admin/views/decorators.py:23 #: contrib/admin/views/decorators.py:23
#: contrib/admin/templates/admin/login.html:25 #: contrib/admin/templates/admin/login.html:25
@ -452,18 +438,15 @@ msgstr "Logg inn"
msgid "" msgid ""
"Please log in again, because your session has expired. Don't worry: Your " "Please log in again, because your session has expired. Don't worry: Your "
"submission has been saved." "submission has been saved."
msgstr "" msgstr "Du må logge inn igjen, fordi økten din har gått ut, men innlegget ditt ble lagret."
"Du må logge inn igjen, fordi sesjonen din har gått ut på dato, men ikke ikke "
"bekjymr deg informasjonen du sendte ble lagret."
#: contrib/admin/views/decorators.py:68 #: contrib/admin/views/decorators.py:68
msgid "" msgid ""
"Looks like your browser isn't configured to accept cookies. Please enable " "Looks like your browser isn't configured to accept cookies. Please enable "
"cookies, reload this page, and try again." "cookies, reload this page, and try again."
msgstr "" msgstr ""
"Det ser ut som om nettleseren din ikke vill ta i mot informasjonskapsler " "Det ser ut som om nettleseren din ikke støtter informasjonskapsler "
"('cookies'). Vennligst omkonfigurer nettleseren din, last siden på ny og " "('cookies'). Vennligst konfigurer nettleseren din, og prøv igjen."
"prøv igjen."
#: contrib/admin/views/decorators.py:82 #: contrib/admin/views/decorators.py:82
msgid "Usernames cannot contain the '@' character." msgid "Usernames cannot contain the '@' character."
@ -500,7 +483,7 @@ msgstr "Ny %s"
#: contrib/admin/views/main.py:336 #: contrib/admin/views/main.py:336
#, python-format #, python-format
msgid "Added %s." msgid "Added %s."
msgstr "Lagt til %s" msgstr "La til %s"
#: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338 #: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338
#: contrib/admin/views/main.py:340 #: contrib/admin/views/main.py:340
@ -528,8 +511,7 @@ msgstr "%(name)s \"%(obj)s\" ble endret."
#: contrib/admin/views/main.py:354 #: contrib/admin/views/main.py:354
#, python-format #, python-format
msgid "" msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
msgstr "%(name)s \"%(obj)s\" ble endret. Du kan endre det igjen under." msgstr "%(name)s \"%(obj)s\" ble endret. Du kan endre det igjen under."
#: contrib/admin/views/main.py:392 #: contrib/admin/views/main.py:392
@ -742,8 +724,8 @@ msgid ""
"There's been an error. It's been reported to the site administrators via e-" "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." "mail and should be fixed shortly. Thanks for your patience."
msgstr "" msgstr ""
"Det har vært en feil. Feilen er blitt rapportert til administrator via e-" "Det har oppstått en feil. Feilen er blitt rapportert til administrator via e-"
"mail, og vill bli fikset snart. Takk for din tålmodighet." "post, og vil bli fikset snart. Takk for din tålmodighet."
#: contrib/admin/templates/admin/404.html:4 #: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8 #: contrib/admin/templates/admin/404.html:8
@ -909,7 +891,7 @@ msgstr "Tilbakestill mitt passord"
#: contrib/admin/templates/registration/logged_out.html:8 #: contrib/admin/templates/registration/logged_out.html:8
msgid "Thanks for spending some quality time with the Web site today." msgid "Thanks for spending some quality time with the Web site today."
msgstr "Takk for å bruke tid på internett siden i dag." msgstr "Takk for at du valgte å bruke kvalitetstid på nettstedet idag."
#: contrib/admin/templates/registration/logged_out.html:10 #: contrib/admin/templates/registration/logged_out.html:10
msgid "Log in again" msgid "Log in again"
@ -954,8 +936,7 @@ msgstr "Endre passord"
#: contrib/admin/templates/registration/password_reset_email.html:2 #: contrib/admin/templates/registration/password_reset_email.html:2
msgid "You're receiving this e-mail because you requested a password reset" msgid "You're receiving this e-mail because you requested a password reset"
msgstr "" msgstr "Du har mottatt denne e-posten fordi du ba om å tilbakestille passordet ditt"
"Du har mottatt denne e-posten fordi du ba om å tilbakestille passordet ditt"
#: contrib/admin/templates/registration/password_reset_email.html:3 #: contrib/admin/templates/registration/password_reset_email.html:3
#, python-format #, python-format
@ -1002,6 +983,12 @@ msgid ""
"as \"internal\" (talk to your system administrator if you aren't sure if\n" "as \"internal\" (talk to your system administrator if you aren't sure if\n"
"your computer is \"internal\").</p>\n" "your computer is \"internal\").</p>\n"
msgstr "" msgstr ""
"\n"
"<p class=\"help\">For å installere bokmerker, dra linken til verktøylinja\n"
"for bokmerker, eller høyreklikk og legg til i bokmerker. Nå kan du du velge\n"
"bokmerket fra hvilken som helst side på nettstedet. Noen av disse\n"
"bokmerkene krever at datamaskinen du bruker er markert som \"intern\"\n"
"(kontakt din systemadministrator hvis du er usikker på om maskinen din er \"intern\").</p>\n"
#: contrib/admin/templates/admin_doc/bookmarklets.html:19 #: contrib/admin/templates/admin_doc/bookmarklets.html:19
msgid "Documentation for this page" msgid "Documentation for this page"
@ -1033,8 +1020,7 @@ msgstr "Endre dette objektet (åpnes i dette vinduet)"
#: contrib/admin/templates/admin_doc/bookmarklets.html:26 #: contrib/admin/templates/admin_doc/bookmarklets.html:26
msgid "Jumps to the admin page for pages that represent a single object." msgid "Jumps to the admin page for pages that represent a single object."
msgstr "" msgstr "Hopp til administrasjonsiden for sidene som representerer et enkelt objekt."
"Hopp til administrasjonsiden for sidene som representerer et enkelt objekt."
#: contrib/admin/templates/admin_doc/bookmarklets.html:28 #: contrib/admin/templates/admin_doc/bookmarklets.html:28
msgid "Edit this object (new window)" msgid "Edit this object (new window)"
@ -1069,7 +1055,7 @@ msgid ""
"This should be an absolute path, excluding the domain name. Example: '/" "This should be an absolute path, excluding the domain name. Example: '/"
"events/search/'." "events/search/'."
msgstr "" msgstr ""
"Denne burde vær en fullstendig sti, uten domene navnet. Foreksempel: '/" "Dette burde vært en fullstendig sti, uten domene navnet. Foreksempel: '/"
"nyheter/les/" "nyheter/les/"
#: contrib/redirects/models.py:9 #: contrib/redirects/models.py:9
@ -1081,7 +1067,7 @@ msgid ""
"This can be either an absolute path (as above) or a full URL starting with " "This can be either an absolute path (as above) or a full URL starting with "
"'http://'." "'http://'."
msgstr "" msgstr ""
"Denne kan enten være en fullstendig sti (som over), eller en hel " "Dette kan enten være en fullstendig sti (som over), eller en hel "
"internettadresse som starter med 'http://'" "internettadresse som starter med 'http://'"
#: contrib/redirects/models.py:12 #: contrib/redirects/models.py:12
@ -1093,10 +1079,8 @@ msgid "redirects"
msgstr "omadresserelser" msgstr "omadresserelser"
#: contrib/flatpages/models.py:8 #: contrib/flatpages/models.py:8
msgid "" msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
"Example: '/about/contact/'. Make sure to have leading and trailing slashes." msgstr "Eksempel: '/om/kontakt/'. Vær sikker på at du har en skråstrek forran og bak."
msgstr ""
"Eksempel: '/om/kontakt/'. Vær sikker på at du har en skråstrek forran og bak."
#: contrib/flatpages/models.py:9 #: contrib/flatpages/models.py:9
msgid "title" msgid "title"
@ -1186,7 +1170,7 @@ msgstr "passord"
#: contrib/auth/models.py:59 #: contrib/auth/models.py:59
msgid "Use '[algo]$[salt]$[hexdigest]'" msgid "Use '[algo]$[salt]$[hexdigest]'"
msgstr "" msgstr "Bruk '[algo]$[salt]$[hexdigest]'"
#: contrib/auth/models.py:60 #: contrib/auth/models.py:60
msgid "staff status" msgid "staff status"
@ -1256,7 +1240,7 @@ msgstr "Melding"
msgid "" msgid ""
"Your Web browser doesn't appear to have cookies enabled. Cookies are " "Your Web browser doesn't appear to have cookies enabled. Cookies are "
"required for logging in." "required for logging in."
msgstr "" msgstr "Din nettleser ser ikkeut til å støtte informasjonskapsler (cookies). Informasjonskapsler er påkrevd for å logge inn."
#: contrib/contenttypes/models.py:25 #: contrib/contenttypes/models.py:25
msgid "python model class name" msgid "python model class name"
@ -1698,8 +1682,7 @@ msgstr "Internettadressen %s peker ikke til et godkjent bilde."
#: core/validators.py:159 #: core/validators.py:159
#, python-format #, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr "" msgstr "Telefon nummeret må være i XXX-XXX-XXXX format. \"%s\" er ikke godkjent."
"Telefon nummeret må være i XXX-XXX-XXXX format. \"%s\" er ikke godkjent."
#: core/validators.py:167 #: core/validators.py:167
#, python-format #, python-format
@ -1732,7 +1715,7 @@ msgstr "Ikke godkjent URL: %s"
#: core/validators.py:206 core/validators.py:208 #: core/validators.py:206 core/validators.py:208
#, python-format #, python-format
msgid "The URL %s is a broken link." msgid "The URL %s is a broken link."
msgstr "Internettadresse fører til en side som ikke virker." msgstr "Internettadresse %s fører til en side som ikke virker."
#: core/validators.py:214 #: core/validators.py:214
msgid "Enter a valid U.S. state abbreviation." msgid "Enter a valid U.S. state abbreviation."
@ -1784,30 +1767,26 @@ msgstr "Vennligst skriv inn et godkjent desimal tall."
#: core/validators.py:349 #: core/validators.py:349
#, python-format #, python-format
msgid "Please enter a valid decimal number with at most %s total digit." msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural "" msgid_plural "Please enter a valid decimal number with at most %s total digits."
"Please enter a valid decimal number with at most %s total digits."
msgstr[0] "Skriv inn et desimal tall med maksimum %s total antall tall." msgstr[0] "Skriv inn et desimal tall med maksimum %s total antall tall."
msgstr[1] "Skriv inn et desimal tall med maksimum %s total antall tall." msgstr[1] "Skriv inn et desimal tall med maksimum %s total antall tall."
#: core/validators.py:352 #: core/validators.py:352
#, python-format #, python-format
msgid "Please enter a valid decimal number with at most %s decimal place." msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural "" msgid_plural "Please enter a valid decimal number with at most %s decimal places."
"Please enter a valid decimal number with at most %s decimal places."
msgstr[0] "Skriv inn et desimal tall med maksimum %s tall bak komma. " msgstr[0] "Skriv inn et desimal tall med maksimum %s tall bak komma. "
msgstr[1] "Skriv inn et desimal tall med maksimum %s tall bak komma. " msgstr[1] "Skriv inn et desimal tall med maksimum %s tall bak komma. "
#: core/validators.py:362 #: core/validators.py:362
#, python-format #, python-format
msgid "Make sure your uploaded file is at least %s bytes big." msgid "Make sure your uploaded file is at least %s bytes big."
msgstr "" msgstr "Vær sikker på at fila du prøver å laste opp er minimum %s bytes stor."
"Vær sikker på at fila du prøver å laste opp er minimum %s bytes stor."
#: core/validators.py:363 #: core/validators.py:363
#, python-format #, python-format
msgid "Make sure your uploaded file is at most %s bytes big." msgid "Make sure your uploaded file is at most %s bytes big."
msgstr "" msgstr "Vær sikker på at fila du prøver å laste opp er maksimum %s bytes stor."
"Vær sikker på at fila du prøver å laste opp er maksimum %s bytes stor."
#: core/validators.py:376 #: core/validators.py:376
msgid "The format for this field is wrong." msgid "The format for this field is wrong."
@ -1824,8 +1803,7 @@ msgstr "Klarte ikke å motta noe fra %s."
#: core/validators.py:429 #: core/validators.py:429
#, python-format #, python-format
msgid "" msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr "" msgstr ""
"Internettadressen %(url)s returnerte en ikke godkjent Content-Type '%" "Internettadressen %(url)s returnerte en ikke godkjent Content-Type '%"
"(contenttype)s'." "(contenttype)s'."
@ -1881,7 +1859,7 @@ msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
"starts with \"%(start)s\".)" "starts with \"%(start)s\".)"
msgstr "" msgstr ""
"\"%(attr)s\" tillegg på linje $(line)s har en ikke godkjent verdi. (Linjen " "\"%(attr)s\" tillegg på linje %(line)s har en ikke godkjent verdi. (Linjen "
"starter med \"%(start)s\".)" "starter med \"%(start)s\".)"
#: db/models/manipulators.py:302 #: db/models/manipulators.py:302
@ -1892,7 +1870,7 @@ msgstr "%(object)s med %(type)s finnes allerede for angitt %(field)s."
#: db/models/fields/__init__.py:40 #: db/models/fields/__init__.py:40
#, python-format #, python-format
msgid "%(optname)s with this %(fieldname)s already exists." msgid "%(optname)s with this %(fieldname)s already exists."
msgstr "$(optname)s med %(fieldname)s finnes allerede." msgstr "%(optname)s med %(fieldname)s finnes allerede."
#: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265 #: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265
#: db/models/fields/__init__.py:542 db/models/fields/__init__.py:553 #: db/models/fields/__init__.py:542 db/models/fields/__init__.py:553
@ -1926,16 +1904,13 @@ msgid "Separate multiple IDs with commas."
msgstr "Separer Id-ene med kommaer." msgstr "Separer Id-ene med kommaer."
#: db/models/fields/related.py:581 #: db/models/fields/related.py:581
msgid "" msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "Hold nede \"Control\", eller \"Command\" på en Mac, for å velge mere enn en."
msgstr ""
"Hold nede \"Control\", eller \"Command\" på en Mac, for å velge mere enn en."
#: db/models/fields/related.py:625 #: db/models/fields/related.py:625
#, python-format #, python-format
msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
msgid_plural "" msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid."
"Please enter valid %(self)s IDs. The values %(value)r are invalid."
msgstr[0] "Skriv inn gyldige %(self)s ID-er. Verdien %(value)r er ikke gyldig." msgstr[0] "Skriv inn gyldige %(self)s ID-er. Verdien %(value)r er ikke gyldig."
msgstr[1] "Skriv inn gyldige %(self)s ID-er. Verdiene %(value)r er ikke gyldige." msgstr[1] "Skriv inn gyldige %(self)s ID-er. Verdiene %(value)r er ikke gyldige."

View File

@ -1,19 +1,20 @@
# SOME DESCRIPTIVE TITLE. # translation of djangojs.po to
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package. # This file is distributed under the same license as the PACKAGE package.
# Espen Grindhaug <espen.grindhaug@mail.com>, 2006. # Espen Grindhaug <espen.grindhaug@mail.com>, 2006.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: djangojs\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-12-09 11:51+0100\n" "POT-Creation-Date: 2005-12-09 11:51+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2007-04-27 06:51+0200\n"
"Last-Translator: Espen Grindhaug <espen.grindhaug@gmail.com>\n" "Last-Translator: \n"
"Language-Team: no\n" "Language-Team: <en@li.org>\n"
"MIME-Version: 1.0\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" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
#: contrib/admin/media/js/SelectFilter2.js:33 #: contrib/admin/media/js/SelectFilter2.js:33
#, perl-format #, perl-format
@ -21,7 +22,6 @@ msgid "Available %s"
msgstr "%s er tilgjengelige" msgstr "%s er tilgjengelige"
#: contrib/admin/media/js/SelectFilter2.js:41 #: contrib/admin/media/js/SelectFilter2.js:41
#, fuzzy
msgid "Choose all" msgid "Choose all"
msgstr "Velg alle" msgstr "Velg alle"
@ -116,3 +116,4 @@ msgstr "I går"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:164
msgid "Tomorrow" msgid "Tomorrow"
msgstr "I morgen" msgstr "I morgen"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,20 +1,15 @@
# SOME DESCRIPTIVE TITLE. #
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# VLADO LABATH <vlado@labath.org>, 2005.
#
#, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: Django 1.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-12-18 19:38-0500\n" "POT-Creation-Date: 2007-04-01 19:21+0200\n"
"PO-Revision-Date: 2005-12-18 19:26-0500\n" "PO-Revision-Date: 2007-04-03 21:48+0200\n"
"Last-Translator: VLADO LABATH <vlado@labath.org>\n" "Last-Translator: <>\n"
"Language-Team: LANGUAGE <sk@li.org>\n" "Language-Team: \n"
"MIME-Version: 1.0\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" "Content-Transfer-Encoding: 8bit"
#: contrib/admin/media/js/SelectFilter2.js:33 #: contrib/admin/media/js/SelectFilter2.js:33
#, perl-format #, perl-format
@ -23,15 +18,15 @@ msgstr "Možný %s"
#: contrib/admin/media/js/SelectFilter2.js:41 #: contrib/admin/media/js/SelectFilter2.js:41
msgid "Choose all" msgid "Choose all"
msgstr "Vyber všetko" msgstr "Vybr všetko"
#: contrib/admin/media/js/SelectFilter2.js:46 #: contrib/admin/media/js/SelectFilter2.js:46
msgid "Add" msgid "Add"
msgstr "Pridaj" msgstr "Pridať"
#: contrib/admin/media/js/SelectFilter2.js:48 #: contrib/admin/media/js/SelectFilter2.js:48
msgid "Remove" msgid "Remove"
msgstr "Vymaž" msgstr "Vymazať"
#: contrib/admin/media/js/SelectFilter2.js:53 #: contrib/admin/media/js/SelectFilter2.js:53
#, perl-format #, perl-format
@ -40,13 +35,13 @@ msgstr "Vybrané %s"
#: contrib/admin/media/js/SelectFilter2.js:54 #: contrib/admin/media/js/SelectFilter2.js:54
msgid "Select your choice(s) and click " msgid "Select your choice(s) and click "
msgstr "Vyber si svoju voľbu a klikni" msgstr "Vyberte položku a kliknite"
#: contrib/admin/media/js/SelectFilter2.js:59 #: contrib/admin/media/js/SelectFilter2.js:59
msgid "Clear all" msgid "Clear all"
msgstr "Vyčisti všetko" msgstr "Odstrániť vybrané"
#: contrib/admin/media/js/dateparse.js:26 #: contrib/admin/media/js/dateparse.js:32
#: contrib/admin/media/js/calendar.js:24 #: contrib/admin/media/js/calendar.js:24
msgid "" msgid ""
"January February March April May June July August September October November " "January February March April May June July August September October November "
@ -55,7 +50,7 @@ msgstr ""
"Január Február Marec Apríl Máj Jún Júl August September Október November " "Január Február Marec Apríl Máj Jún Júl August September Október November "
"December" "December"
#: contrib/admin/media/js/dateparse.js:27 #: contrib/admin/media/js/dateparse.js:33
msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
msgstr "Nedeľa Pondelok Utorok Streda Štvrtok Piatok Sobota" msgstr "Nedeľa Pondelok Utorok Streda Štvrtok Piatok Sobota"
@ -63,49 +58,59 @@ msgstr "Nedeľa Pondelok Utorok Streda Štvrtok Piatok Sobota"
msgid "S M T W T F S" msgid "S M T W T F S"
msgstr "N P U S Š P S" msgstr "N P U S Š P S"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45 #: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80 #: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
msgid "Show"
msgstr "Zobraziť"
#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
msgid "Hide"
msgstr "Skryť"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
msgid "Now" msgid "Now"
msgstr "Práve teraz" msgstr "Práve teraz"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
msgid "Clock" msgid "Clock"
msgstr "Hodiny" msgstr "Hodiny"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
msgid "Choose a time" msgid "Choose a time"
msgstr "Vyber čas" msgstr "Vybr čas"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
msgid "Midnight" msgid "Midnight"
msgstr "Polnoc" msgstr "Polnoc"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
msgid "6 a.m." msgid "6 a.m."
msgstr "6 ráno" msgstr "6 ráno"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
msgid "Noon" msgid "Noon"
msgstr "Poludnie" msgstr "Poludnie"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
msgid "Cancel" msgid "Cancel"
msgstr "Zruš" msgstr "Zruš"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
msgid "Today" msgid "Today"
msgstr "Dnes" msgstr "Dnes"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
msgid "Calendar" msgid "Calendar"
msgstr "Kalendár" msgstr "Kalendár"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
msgid "Yesterday" msgid "Yesterday"
msgstr "Včera" msgstr "Včera"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
msgid "Tomorrow" msgid "Tomorrow"
msgstr "Zajtra" msgstr "Zajtra"

Binary file not shown.

View File

@ -0,0 +1,107 @@
# Copyright (C) 2007
# This file is distributed under the same license as the PACKAGE package.
#
msgid ""
msgstr ""
"Project-Id-Version: DJANGO-JS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-12-09 11:51+0100\n"
"PO-Revision-Date: 2007-03-31 21:29+0100\n"
"Last-Translator: Gasper Koren <skrat@owca.info>\n"
"Language-Team: SLOVENIAN <lugos-slo@lugos.si>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: Slovenian\n"
"X-Poedit-Country: SLOVENIA\n"
#: contrib/admin/media/js/SelectFilter2.js:33
#, perl-format
msgid "Available %s"
msgstr "Možne %s"
#: contrib/admin/media/js/SelectFilter2.js:41
msgid "Choose all"
msgstr "Izberi vse"
#: contrib/admin/media/js/SelectFilter2.js:46
msgid "Add"
msgstr "Dodaj"
#: contrib/admin/media/js/SelectFilter2.js:48
msgid "Remove"
msgstr "Odstrani"
#: contrib/admin/media/js/SelectFilter2.js:53
#, perl-format
msgid "Chosen %s"
msgstr "Izberite %s"
#: contrib/admin/media/js/SelectFilter2.js:54
msgid "Select your choice(s) and click "
msgstr "Izberite in kliknite"
#: contrib/admin/media/js/SelectFilter2.js:59
msgid "Clear all"
msgstr "Izbriši vse"
#: contrib/admin/media/js/dateparse.js:26
#: contrib/admin/media/js/calendar.js:24
msgid "January February March April May June July August September October November December"
msgstr "Januar Februar Marec April Maj Junij Julij Avgust September Oktober November December"
#: contrib/admin/media/js/dateparse.js:27
msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
msgstr "Nedelja Ponedeljek Torek Sreda Četrtek Petek Sobota"
#: contrib/admin/media/js/calendar.js:25
msgid "S M T W T F S"
msgstr "N P T S Č P S"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80
msgid "Now"
msgstr "Sedaj"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48
msgid "Clock"
msgstr "URA"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77
msgid "Choose a time"
msgstr "Izberite čas"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
msgid "Midnight"
msgstr "Polnoč"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
msgid "6 a.m."
msgstr "Ob 6h"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
msgid "Noon"
msgstr "Opoldne"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168
msgid "Cancel"
msgstr "Prekliči"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162
msgid "Today"
msgstr "Danes"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114
msgid "Calendar"
msgstr "Koledar"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160
msgid "Yesterday"
msgstr "Včeraj"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164
msgid "Tomorrow"
msgstr "Jutri"

File diff suppressed because it is too large Load Diff

View File

@ -2,9 +2,6 @@
# Copyright (C) 2005 # Copyright (C) 2005
# This file is distributed under the same license as the Django package. # 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 "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: djangojs\n" "Project-Id-Version: djangojs\n"

View File

@ -2,19 +2,19 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package. # This file is distributed under the same license as the PACKAGE package.
# #
# pavithran <pavithran.s@gmail.com>, 2007.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: django\n" "Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-09-25 15:43+0200\n" "POT-Creation-Date: 2006-09-25 15:43+0200\n"
"PO-Revision-Date: 2007-02-28 18:35+0530\n" "PO-Revision-Date: 2007-05-19 12:44+0530\n"
"Last-Translator: pavithran <pavithran.s@gmail.com>\n" "Last-Translator: pavithran <pavithran.s@gmail.com>\n"
"Language-Team: Telugu <indlinux-telugu@lists.sourceforge.net>\n" "Language-Team: Telugu <indlinux-telugu@lists.sourceforge.net>\n"
"MIME-Version: 1.0\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" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n" "X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; nplurals=n>1;"
#: contrib/comments/models.py:67 contrib/comments/models.py:166 #: contrib/comments/models.py:67 contrib/comments/models.py:166
msgid "object ID" msgid "object ID"
@ -144,7 +144,7 @@ msgstr "కర్మ స్కొరులు"
#: contrib/comments/models.py:242 #: contrib/comments/models.py:242
#, python-format #, python-format
msgid "%(score)d rating by %(user)s" msgid "%(score)d rating by %(user)s"
msgstr "%(user) రేటింగ్" msgstr "%(score)d కి %(user)s రేటింగ్"
#: contrib/comments/models.py:258 #: contrib/comments/models.py:258
#, python-format #, python-format
@ -153,9 +153,9 @@ msgid ""
"\n" "\n"
"%(text)s" "%(text)s"
msgstr "" msgstr ""
"%(user)s చేత చేయబడ్డ వ్యాఖ్యానములు" "%(user)s చేత చేయబడ్డ వ్యాఖ్యానములు:\n"
"\n" "\n"
"%(text)లు" "%(text)s"
#: contrib/comments/models.py:265 #: contrib/comments/models.py:265
msgid "flag date" msgid "flag date"
@ -163,11 +163,11 @@ msgstr "ఫ్లాగ్ తేది "
#: contrib/comments/models.py:268 #: contrib/comments/models.py:268
msgid "user flag" msgid "user flag"
msgstr "యూర్ ఫ్లాగ్" msgstr "యూర్ ఫ్లాగ్"
#: contrib/comments/models.py:269 #: contrib/comments/models.py:269
msgid "user flags" msgid "user flags"
msgstr "యూర్ ఫ్లాగులు" msgstr "యూర్ ఫ్లాగులు"
#: contrib/comments/models.py:273 #: contrib/comments/models.py:273
#, python-format #, python-format
@ -193,7 +193,7 @@ msgstr "మొదరేటర్ తీసివేసిన %r"
#: contrib/comments/views/karma.py:19 #: contrib/comments/views/karma.py:19
msgid "Anonymous users cannot vote" msgid "Anonymous users cannot vote"
msgstr "అపరిచిత యూఙరులు వోటు వేయలేరు" msgstr "అపరిచిత యూజర్లు వోటు వేయలేరు"
#: contrib/comments/views/karma.py:23 #: contrib/comments/views/karma.py:23
msgid "Invalid comment ID" msgid "Invalid comment ID"
@ -220,12 +220,12 @@ msgid_plural ""
"\n" "\n"
"%(text)s" "%(text)s"
msgstr[0] "" msgstr[0] ""
"ఈ వ్యాఖ్యానము చేసిన యూఙర్ %(count)లు కన్న తక్కువ సమర్పించాడు " "ఈ వ్యాఖ్యానము చేసిన యూజర్ %(count)s లు కన్న తక్కువ సమర్పించాడు "
"వ్యాఖ్యానము:\n" "వ్యాఖ్యానము:\n"
"\n" "\n"
"%(text)s" "%(text)s"
msgstr[1] "" msgstr[1] ""
"ఈ వ్యాఖ్యానము చేసిన యూఙర్ %(count)లు కన్న తక్కువ సమర్పించాడు" "ఈ వ్యాఖ్యానము చేసిన యూజర్ %(count)s లు కన్న తక్కువ సమర్పించాడు"
"వ్యాఖ్యానములు:\n" "వ్యాఖ్యానములు:\n"
"\n" "\n"
"%(text)s" "%(text)s"
@ -237,7 +237,7 @@ msgid ""
"\n" "\n"
"%(text)s" "%(text)s"
msgstr "" msgstr ""
"ఈ వ్యాఖ్యానము స్కెచి యూర్ చేసాడు :\n" "ఈ వ్యాఖ్యానము స్కెచి యూర్ చేసాడు :\n"
"\n" "\n"
"%(text)s" "%(text)s"
@ -274,7 +274,7 @@ msgstr "వ్యాఖ్యానము ఫార్మ్ లో 'ప్ర
#: contrib/comments/templates/comments/form.html:8 #: contrib/comments/templates/comments/form.html:8
#: contrib/admin/templates/admin/login.html:17 #: contrib/admin/templates/admin/login.html:17
msgid "Username:" msgid "Username:"
msgstr "యూర్ పేరు" msgstr "యూర్ పేరు"
#: contrib/comments/templates/comments/form.html:6 #: contrib/comments/templates/comments/form.html:6
#: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/object_history.html:3
@ -343,7 +343,8 @@ msgstr "మీ పేరు"
msgid "" msgid ""
"<h3>By %s:</h3>\n" "<h3>By %s:</h3>\n"
"<ul>\n" "<ul>\n"
msgstr "<h3> %s తో:</h3>\n" msgstr ""
"<h3> %s తో:</h3>\n"
"<ul>\n" "<ul>\n"
#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88 #: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
@ -353,15 +354,15 @@ msgstr "అన్నీ"
#: contrib/admin/filterspecs.py:109 #: contrib/admin/filterspecs.py:109
msgid "Any date" msgid "Any date"
msgstr "ఏ రోైన" msgstr "ఏ రోైన"
#: contrib/admin/filterspecs.py:110 #: contrib/admin/filterspecs.py:110
msgid "Today" msgid "Today"
msgstr "ఈ రోు" msgstr "ఈ రోు"
#: contrib/admin/filterspecs.py:113 #: contrib/admin/filterspecs.py:113
msgid "Past 7 days" msgid "Past 7 days"
msgstr "గత 7 రోుల గా" msgstr "గత 7 రోుల గా"
#: contrib/admin/filterspecs.py:115 #: contrib/admin/filterspecs.py:115
msgid "This month" msgid "This month"
@ -413,13 +414,13 @@ msgstr "లాగ్ ఎంట్రీలు"
#: contrib/admin/templatetags/admin_list.py:230 #: contrib/admin/templatetags/admin_list.py:230
msgid "All dates" msgid "All dates"
msgstr "అన్నీ రోులు" msgstr "అన్నీ రోులు"
#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:59 #: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:59
msgid "" msgid ""
"Please enter a correct username and password. Note that both fields are case-" "Please enter a correct username and password. Note that both fields are case-"
"sensitive." "sensitive."
msgstr "దయచేసి సరైన యూర్ పేరు పాస్ వర్డ్ ఇవ్వండి" msgstr "దయచేసి సరైన యూర్ పేరు పాస్ వర్డ్ ఇవ్వండి"
#: contrib/admin/views/decorators.py:24 #: contrib/admin/views/decorators.py:24
#: contrib/admin/templates/admin/login.html:25 #: contrib/admin/templates/admin/login.html:25
@ -430,22 +431,22 @@ msgstr "లాగ్ ఇన్"
msgid "" msgid ""
"Please log in again, because your session has expired. Don't worry: Your " "Please log in again, because your session has expired. Don't worry: Your "
"submission has been saved." "submission has been saved."
msgstr "దయచేసి మళీ లాగ్ ఇన్ అవ్వండి ఎందుకంటే మీ సేస్సన్ ముగిసింది . బాధపడకండి మీ సమర్పన దాచిపెట్టాము" msgstr "దయచేసి మళ్ళీ లాగ్ ఇన్ అవ్వండి ఎందుకంటే మీ సేస్సన్ ముగిసింది . బాధపడకండి మీ సమర్పన దాచిపెట్టాము"
#: contrib/admin/views/decorators.py:69 #: contrib/admin/views/decorators.py:69
msgid "" msgid ""
"Looks like your browser isn't configured to accept cookies. Please enable " "Looks like your browser isn't configured to accept cookies. Please enable "
"cookies, reload this page, and try again." "cookies, reload this page, and try again."
msgstr "మీ బ్రౌర్ పై కుకీస్ అంగీకరించబడేటట్లు చేయలేదు . దయ చేసి కుకీస్ ఎనేబల్ చేసి ,మళ్ళీ ట్రై చేయండి" msgstr "మీ బ్రౌర్ పై కుకీస్ అంగీకరించేటట్లు చేయలేదు . దయ చేసి కుకీస్ ఎనేబల్ చేసి ,మళ్ళీ ట్రై చేయండి"
#: contrib/admin/views/decorators.py:83 #: contrib/admin/views/decorators.py:83
msgid "Usernames cannot contain the '@' character." msgid "Usernames cannot contain the '@' character."
msgstr "యూర్ పేరు లో '@' అక్షరము ఉందకూడడు" msgstr "యూర్ పేరు లో '@' అక్షరము ఉందకూడడు"
#: contrib/admin/views/decorators.py:85 #: contrib/admin/views/decorators.py:85
#, python-format #, python-format
msgid "Your e-mail address is not your username. Try '%s' instead." msgid "Your e-mail address is not your username. Try '%s' instead."
msgstr "మీ ఈ మెయిల్ అడ్రస్ మీ యూర్ పేరు కాదు . '%s' ఇచ్చి చూడండి " msgstr "మీ ఈ మెయిల్ అడ్రస్ మీ యూర్ పేరు కాదు . '%s' ఇచ్చి చూడండి "
#: contrib/admin/views/main.py:223 #: contrib/admin/views/main.py:223
msgid "Site administration" msgid "Site administration"
@ -454,7 +455,7 @@ msgstr "సైట్ నిర్వాహన"
#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:17 #: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:17
#, python-format #, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully." msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr "%(name)s \"%(obj)s\"యప్రదంగా కలపబడ్డడి" msgstr "%(name)s \"%(obj)s\"యప్రదంగా కలపబడ్డడి"
#: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347 #: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347
#: contrib/admin/views/auth.py:22 #: contrib/admin/views/auth.py:22
@ -464,12 +465,12 @@ msgstr "మీరు మళ్ళీ దీనినీ క్రింద మ
#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356 #: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356
#, python-format #, python-format
msgid "You may add another %s below." msgid "You may add another %s below."
msgstr "మీరు ఇంకొక %s ని క్రింద త చేయొచ్చు" msgstr "మీరు ఇంకొక %s ని క్రింద త చేయొచ్చు"
#: contrib/admin/views/main.py:289 #: contrib/admin/views/main.py:289
#, python-format #, python-format
msgid "Add %s" msgid "Add %s"
msgstr "%s ని త చేయండి " msgstr "%s ని త చేయండి "
#: contrib/admin/views/main.py:335 #: contrib/admin/views/main.py:335
#, python-format #, python-format
@ -493,17 +494,17 @@ msgstr "%s తీసివేయబడ్డడి"
#: contrib/admin/views/main.py:342 #: contrib/admin/views/main.py:342
msgid "No fields changed." msgid "No fields changed."
msgstr "మార్చబడలేదు" msgstr "ఫీల్డ్స్ ఏమి మార్చబడలేదు"
#: contrib/admin/views/main.py:345 #: contrib/admin/views/main.py:345
#, python-format #, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully." msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr "%(name)s \"%(obj)s\" యప్రదంగా మార్చబడిండి" msgstr "%(name)s \"%(obj)s\" యప్రదంగా మార్చబడిండి"
#: contrib/admin/views/main.py:353 #: contrib/admin/views/main.py:353
#, python-format #, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
msgstr "%(name)s \"%(obj)s\" యప్రదంగా కలపబడ్డడి .మీరు మళ్ళీ దీనినీ క్రింద మార్చవచ్చు" msgstr "%(name)s \"%(obj)s\" యప్రదంగా కలపబడ్డడి .మీరు మళ్ళీ దీనినీ క్రింద మార్చవచ్చు"
#: contrib/admin/views/main.py:391 #: contrib/admin/views/main.py:391
#, python-format #, python-format
@ -513,17 +514,17 @@ msgstr "%s ని మార్చంది"
#: contrib/admin/views/main.py:473 #: contrib/admin/views/main.py:473
#, python-format #, python-format
msgid "One or more %(fieldname)s in %(name)s: %(obj)s" msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
msgstr "ఒకటి కాని ,అంత కన్నఎక్కువ %(name)లు లో %(fieldname)లు : %(obj)లు " msgstr "ఒకటి కాని ,అంత కన్నఎక్కువ %(name)s లో %(fieldname)s : %(obj)s "
#: contrib/admin/views/main.py:478 #: contrib/admin/views/main.py:478
#, python-format #, python-format
msgid "One or more %(fieldname)s in %(name)s:" msgid "One or more %(fieldname)s in %(name)s:"
msgstr "ఒకటి కాని ,అంత కన్నఎక్కువ %(name)లు లో %(fieldname)లు" msgstr "ఒకటి కాని ,అంత కన్నఎక్కువ %(name)s లో %(fieldname)s"
#: contrib/admin/views/main.py:511 #: contrib/admin/views/main.py:511
#, python-format #, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr "%(name)లు \"%(obj)s\"ఙయప్రదంగా తీసివేయబడ్డడి" msgstr "%(name)s \"%(obj)s\"జయప్రదంగా తీసివేయబడ్డడి"
#: contrib/admin/views/main.py:514 #: contrib/admin/views/main.py:514
msgid "Are you sure?" msgid "Are you sure?"
@ -532,7 +533,7 @@ msgstr "మీరు కచ్చితంగా ఉన్నారా?"
#: contrib/admin/views/main.py:536 #: contrib/admin/views/main.py:536
#, python-format #, python-format
msgid "Change history: %s" msgid "Change history: %s"
msgstr "మార్చబడిన పురాణము" msgstr "మార్చబడిన పురాణము: %s"
#: contrib/admin/views/main.py:570 #: contrib/admin/views/main.py:570
#, python-format #, python-format
@ -601,7 +602,7 @@ msgstr ""
#: contrib/admin/views/doc.py:229 #: contrib/admin/views/doc.py:229
#, python-format #, python-format
msgid "Fields on %s objects" msgid "Fields on %s objects"
msgstr "వస్తువు" msgstr "%s వస్తువులలో ఫీల్డ్స్ "
#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301 #: 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:303 contrib/admin/views/doc.py:309
@ -682,7 +683,7 @@ msgstr ""
#: contrib/admin/views/auth.py:28 #: contrib/admin/views/auth.py:28
msgid "Add user" msgid "Add user"
msgstr "యూఙర్" msgstr "యూజర్ ని జత చేయండి"
#: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/object_history.html:3
#: contrib/admin/templates/admin/change_list.html:5 #: contrib/admin/templates/admin/change_list.html:5
@ -742,7 +743,7 @@ msgstr "తేది/వేళ"
#: contrib/admin/templates/admin/object_history.html:19 #: contrib/admin/templates/admin/object_history.html:19
msgid "User" msgid "User"
msgstr "యూర్" msgstr "యూర్"
#: contrib/admin/templates/admin/object_history.html:20 #: contrib/admin/templates/admin/object_history.html:20
msgid "Action" msgid "Action"
@ -760,11 +761,11 @@ msgstr ""
#: contrib/admin/templates/admin/base_site.html:4 #: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin" msgid "Django site admin"
msgstr "డ్ాంగొ యొక్క నిర్వాహనదారులు" msgstr "డ్ాంగొ యొక్క నిర్వాహనదారులు"
#: contrib/admin/templates/admin/base_site.html:7 #: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration" msgid "Django administration"
msgstr "డ్ాంగొ నిర్వాహన" msgstr "డ్ాంగొ నిర్వాహన"
#: contrib/admin/templates/admin/500.html:4 #: contrib/admin/templates/admin/500.html:4
msgid "Server error" msgid "Server error"
@ -782,31 +783,31 @@ msgstr "సర్వర్ తప్పు <em>(500)</em>"
msgid "" msgid ""
"There's been an error. It's been reported to the site administrators via e-" "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." "mail and should be fixed shortly. Thanks for your patience."
msgstr "తప్పు రిగిండి . దానిని నిర్వాహనాధికారులు కి ఈ మెయిల్ చేయబడ్డడి,మీ ఓపిక కి ధన్యవాదములు" msgstr "తప్పు రిగిండి . దానిని నిర్వాహనాధికారులు కి ఈ మెయిల్ చేయబడ్డడి,మీ ఓపిక కి ధన్యవాదములు"
#: contrib/admin/templates/admin/404.html:4 #: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8 #: contrib/admin/templates/admin/404.html:8
msgid "Page not found" msgid "Page not found"
msgstr "పేి దొరకలేదు" msgstr "పేి దొరకలేదు"
#: contrib/admin/templates/admin/404.html:10 #: contrib/admin/templates/admin/404.html:10
msgid "We're sorry, but the requested page could not be found." msgid "We're sorry, but the requested page could not be found."
msgstr "క్షమించండి మీరు కోరిన పేి దొరకలేడు" msgstr "క్షమించండి మీరు కోరిన పేి దొరకలేడు"
#: contrib/admin/templates/admin/index.html:17 #: contrib/admin/templates/admin/index.html:17
#, python-format #, python-format
msgid "Models available in the %(name)s application." msgid "Models available in the %(name)s application."
msgstr "మొడల్ లు %(name)లో దొరికే అప్ప్లికేషన్" msgstr "మొడల్ లు %(name)s లో దొరికే అప్ప్లికేషన్"
#: contrib/admin/templates/admin/index.html:18 #: contrib/admin/templates/admin/index.html:18
#, python-format #, python-format
msgid "%(name)s" msgid "%(name)s"
msgstr "" msgstr "%(name)s"
#: contrib/admin/templates/admin/index.html:28 #: contrib/admin/templates/admin/index.html:28
#: contrib/admin/templates/admin/change_form.html:15 #: contrib/admin/templates/admin/change_form.html:15
msgid "Add" msgid "Add"
msgstr "త చేయి" msgstr "త చేయి"
#: contrib/admin/templates/admin/index.html:34 #: contrib/admin/templates/admin/index.html:34
msgid "Change" msgid "Change"
@ -831,7 +832,7 @@ msgstr "ఏమి దొరకలేదు"
#: contrib/admin/templates/admin/change_list.html:11 #: contrib/admin/templates/admin/change_list.html:11
#, python-format #, python-format
msgid "Add %(name)s" msgid "Add %(name)s"
msgstr "%(name)లు ఙత చేయు" msgstr "%(name)s జత చేయు"
#: contrib/admin/templates/admin/login.html:22 #: contrib/admin/templates/admin/login.html:22
msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?" msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
@ -943,7 +944,7 @@ msgstr ""
#: contrib/admin/templates/admin/auth/user/add_form.html:12 #: contrib/admin/templates/admin/auth/user/add_form.html:12
msgid "Username" msgid "Username"
msgstr "యూర్ పేరు" msgstr "యూర్ పేరు"
#: contrib/admin/templates/admin/auth/user/add_form.html:18 #: contrib/admin/templates/admin/auth/user/add_form.html:18
msgid "Password" msgid "Password"
@ -967,7 +968,7 @@ msgstr "పాస్ వర్డ్ మార్పు"
#: contrib/admin/templates/registration/password_change_done.html:6 #: contrib/admin/templates/registration/password_change_done.html:6
#: contrib/admin/templates/registration/password_change_done.html:10 #: contrib/admin/templates/registration/password_change_done.html:10
msgid "Password change successful" msgid "Password change successful"
msgstr "పాస్ వర్డ్ మార్పు యప్రదమైండి " msgstr "పాస్ వర్డ్ మార్పు యప్రదమైండి "
#: contrib/admin/templates/registration/password_change_done.html:12 #: contrib/admin/templates/registration/password_change_done.html:12
msgid "Your password was changed." msgid "Your password was changed."
@ -1005,7 +1006,7 @@ msgstr "మళ్ళీ లాగ్ ఇన్ అవ్వండి"
#: contrib/admin/templates/registration/password_reset_done.html:6 #: contrib/admin/templates/registration/password_reset_done.html:6
#: contrib/admin/templates/registration/password_reset_done.html:10 #: contrib/admin/templates/registration/password_reset_done.html:10
msgid "Password reset successful" msgid "Password reset successful"
msgstr "పాస్ వర్డ్ రీసెట్ యప్రదమైండి" msgstr "పాస్ వర్డ్ రీసెట్ యప్రదమైండి"
#: contrib/admin/templates/registration/password_reset_done.html:12 #: contrib/admin/templates/registration/password_reset_done.html:12
msgid "" msgid ""
@ -1051,11 +1052,11 @@ msgstr "మీ కొత్త పాస్ వర్డ్ : %(new_password)s
#: contrib/admin/templates/registration/password_reset_email.html:7 #: contrib/admin/templates/registration/password_reset_email.html:7
msgid "Feel free to change this password by going to this page:" msgid "Feel free to change this password by going to this page:"
msgstr "నిస్సందేహము గా ఈ పేి క్ కి వెళ్ళి పాస్ వర్డ్ మార్చుకోండి " msgstr "నిస్సందేహము గా ఈ పేి క్ కి వెళ్ళి పాస్ వర్డ్ మార్చుకోండి "
#: contrib/admin/templates/registration/password_reset_email.html:11 #: contrib/admin/templates/registration/password_reset_email.html:11
msgid "Your username, in case you've forgotten:" msgid "Your username, in case you've forgotten:"
msgstr "మీ యూర్ పేరు, ఒక వేళ మర్చిపోయి ఉంటే " msgstr "మీ యూర్ పేరు, ఒక వేళ మర్చిపోయి ఉంటే "
#: contrib/admin/templates/registration/password_reset_email.html:13 #: contrib/admin/templates/registration/password_reset_email.html:13
msgid "Thanks for using our site!" msgid "Thanks for using our site!"
@ -1103,19 +1104,19 @@ msgstr "వస్తువు ఇడి చూడండి"
msgid "" msgid ""
"Shows the content-type and unique ID for pages that represent a single " "Shows the content-type and unique ID for pages that represent a single "
"object." "object."
msgstr "వస్తువు" msgstr ""
#: contrib/admin/templates/admin_doc/bookmarklets.html:25 #: contrib/admin/templates/admin_doc/bookmarklets.html:25
msgid "Edit this object (current window)" msgid "Edit this object (current window)"
msgstr "వస్తువు" msgstr "వస్తువు ని మార్చండి (ప్రస్తుత విండొ)"
#: contrib/admin/templates/admin_doc/bookmarklets.html:26 #: contrib/admin/templates/admin_doc/bookmarklets.html:26
msgid "Jumps to the admin page for pages that represent a single object." msgid "Jumps to the admin page for pages that represent a single object."
msgstr "వస్తువు" msgstr ""
#: contrib/admin/templates/admin_doc/bookmarklets.html:28 #: contrib/admin/templates/admin_doc/bookmarklets.html:28
msgid "Edit this object (new window)" msgid "Edit this object (new window)"
msgstr "వస్తువు" msgstr "వస్తువు ని మార్చండి(కొత్త విండొ) "
#: contrib/admin/templates/admin_doc/bookmarklets.html:29 #: contrib/admin/templates/admin_doc/bookmarklets.html:29
msgid "As above, but opens the admin page in a new window." msgid "As above, but opens the admin page in a new window."
@ -1197,7 +1198,7 @@ msgstr "నమొదు చేయటము అవసరం"
#: contrib/flatpages/models.py:14 #: contrib/flatpages/models.py:14
msgid "If this is checked, only logged-in users will be able to view the page." msgid "If this is checked, only logged-in users will be able to view the page."
msgstr "ఇది చెక్ చేసి ఉంటే కేవలం లాగ్గడ్ ఇన్ యూఙర్లు పేఙి చూడలేస్తారు" msgstr "ఇది చెక్ చేసి ఉంటే కేవలం లాగ్గడ్ ఇన్ యూజర్లు పేజి చూడలేస్తారు"
#: contrib/flatpages/models.py:18 #: contrib/flatpages/models.py:18
msgid "flat page" msgid "flat page"
@ -1237,7 +1238,7 @@ msgstr "గుంపులు"
#: contrib/auth/models.py:90 #: contrib/auth/models.py:90
msgid "username" msgid "username"
msgstr "యూర్ పేరు" msgstr "యూర్ పేరు"
#: contrib/auth/models.py:90 #: contrib/auth/models.py:90
msgid "" msgid ""
@ -1309,15 +1310,15 @@ msgstr ""
#: contrib/auth/models.py:102 #: contrib/auth/models.py:102
msgid "user permissions" msgid "user permissions"
msgstr "యూర్ అనుమతులు" msgstr "యూర్ అనుమతులు"
#: contrib/auth/models.py:105 #: contrib/auth/models.py:105
msgid "user" msgid "user"
msgstr "యూర్" msgstr "యూర్"
#: contrib/auth/models.py:106 #: contrib/auth/models.py:106
msgid "users" msgid "users"
msgstr "యూర్లు" msgstr "యూర్లు"
#: contrib/auth/models.py:111 #: contrib/auth/models.py:111
msgid "Personal info" msgid "Personal info"
@ -1427,7 +1428,7 @@ msgstr "ఆదివారము"
#: utils/dates.py:14 #: utils/dates.py:14
msgid "January" msgid "January"
msgstr "ాన్వరి " msgstr "ాన్వరి "
#: utils/dates.py:14 #: utils/dates.py:14
msgid "February" msgid "February"
@ -1447,11 +1448,11 @@ msgstr "మే"
#: utils/dates.py:14 utils/dates.py:27 #: utils/dates.py:14 utils/dates.py:27
msgid "June" msgid "June"
msgstr "ూను" msgstr "ూను"
#: utils/dates.py:15 utils/dates.py:27 #: utils/dates.py:15 utils/dates.py:27
msgid "July" msgid "July"
msgstr "ులై" msgstr "ులై"
#: utils/dates.py:15 #: utils/dates.py:15
msgid "August" msgid "August"
@ -1475,7 +1476,7 @@ msgstr "డిసెంబర్"
#: utils/dates.py:19 #: utils/dates.py:19
msgid "jan" msgid "jan"
msgstr "ాన్" msgstr "ాన్"
#: utils/dates.py:19 #: utils/dates.py:19
msgid "feb" msgid "feb"
@ -1495,11 +1496,11 @@ msgstr "మే"
#: utils/dates.py:19 #: utils/dates.py:19
msgid "jun" msgid "jun"
msgstr "ూన్" msgstr "ూన్"
#: utils/dates.py:20 #: utils/dates.py:20
msgid "jul" msgid "jul"
msgstr "ుల్" msgstr "ుల్"
#: utils/dates.py:20 #: utils/dates.py:20
msgid "aug" msgid "aug"
@ -1523,7 +1524,7 @@ msgstr "డిస్"
#: utils/dates.py:27 #: utils/dates.py:27
msgid "Jan." msgid "Jan."
msgstr "ాన్" msgstr "ాన్"
#: utils/dates.py:27 #: utils/dates.py:27
msgid "Feb." msgid "Feb."
@ -1570,8 +1571,8 @@ msgstr[1] "వారాలు"
#: utils/timesince.py:15 #: utils/timesince.py:15
msgid "day" msgid "day"
msgid_plural "days" msgid_plural "days"
msgstr[0] "రోు" msgstr[0] "రోు"
msgstr[1] "రోులు" msgstr[1] "రోులు"
#: utils/timesince.py:16 #: utils/timesince.py:16
msgid "hour" msgid "hour"
@ -1615,7 +1616,7 @@ msgstr "బెంగాలి"
#: conf/global_settings.py:41 #: conf/global_settings.py:41
msgid "Czech" msgid "Czech"
msgstr "క్ెఖ్" msgstr "క్ెఖ్"
#: conf/global_settings.py:42 #: conf/global_settings.py:42
msgid "Welsh" msgid "Welsh"
@ -1627,7 +1628,7 @@ msgstr "డానిశ్"
#: conf/global_settings.py:44 #: conf/global_settings.py:44
msgid "German" msgid "German"
msgstr "ెర్మన్" msgstr "ెర్మన్"
#: conf/global_settings.py:45 #: conf/global_settings.py:45
msgid "Greek" msgid "Greek"
@ -1643,7 +1644,7 @@ msgstr "స్పానిష్"
#: conf/global_settings.py:48 #: conf/global_settings.py:48
msgid "Argentinean Spanish" msgid "Argentinean Spanish"
msgstr "అర్ంటీనా స్పానిష్" msgstr "అర్ంటీనా స్పానిష్"
#: conf/global_settings.py:49 #: conf/global_settings.py:49
msgid "Finnish" msgid "Finnish"
@ -1675,7 +1676,7 @@ msgstr "ఇటాలియవ్"
#: conf/global_settings.py:56 #: conf/global_settings.py:56
msgid "Japanese" msgid "Japanese"
msgstr "పనీస్" msgstr "పనీస్"
#: conf/global_settings.py:57 #: conf/global_settings.py:57
msgid "Dutch" msgid "Dutch"
@ -1683,11 +1684,11 @@ msgstr "డట్చ్"
#: conf/global_settings.py:58 #: conf/global_settings.py:58
msgid "Norwegian" msgid "Norwegian"
msgstr "నార్వీియన్" msgstr "నార్వీియన్"
#: conf/global_settings.py:59 #: conf/global_settings.py:59
msgid "Brazilian" msgid "Brazilian"
msgstr "బ్రీలియన్" msgstr "బ్రీలియన్"
#: conf/global_settings.py:60 #: conf/global_settings.py:60
msgid "Romanian" msgid "Romanian"
@ -1794,7 +1795,7 @@ msgstr "సంవత్సరము 1900 లేక దాని తరువా
#: core/validators.py:142 #: core/validators.py:142
#, python-format #, python-format
msgid "Invalid date: %s." msgid "Invalid date: %s."
msgstr "సరికాని తారీఖు" msgstr "సరికాని తారీఖు : %s."
#: core/validators.py:146 db/models/fields/__init__.py:415 #: core/validators.py:146 db/models/fields/__init__.py:415
msgid "Enter a valid date in YYYY-MM-DD format." msgid "Enter a valid date in YYYY-MM-DD format."
@ -1846,8 +1847,10 @@ msgstr "సరైన URL కావాలి"
msgid "" msgid ""
"Valid HTML is required. Specific errors are:\n" "Valid HTML is required. Specific errors are:\n"
"%s" "%s"
msgstr "సరైన HTML ఇవ్వండి .ప్రత్యేకమైన తప్పులు :\n" msgstr ""
"సరైన HTML ఇవ్వండి .ప్రత్యేకమైన తప్పులు :\n"
"%s" "%s"
#: core/validators.py:220 #: core/validators.py:220
#, python-format #, python-format
msgid "Badly formed XML: %s" msgid "Badly formed XML: %s"
@ -1856,7 +1859,7 @@ msgstr ""
#: core/validators.py:230 #: core/validators.py:230
#, python-format #, python-format
msgid "Invalid URL: %s" msgid "Invalid URL: %s"
msgstr "" msgstr "సరికాని URL: %s"
#: core/validators.py:234 core/validators.py:236 #: core/validators.py:234 core/validators.py:236
#, python-format #, python-format
@ -1865,7 +1868,7 @@ msgstr ""
#: core/validators.py:242 #: core/validators.py:242
msgid "Enter a valid U.S. state abbreviation." msgid "Enter a valid U.S. state abbreviation."
msgstr "దయచేసి సరైన అగ్ర రా్య సంక్షేపము చేసిన రాష్ట్రము పేరు ఇవ్వండి" msgstr "దయచేసి సరైన అగ్ర రా్య సంక్షేపము చేసిన రాష్ట్రము పేరు ఇవ్వండి"
#: core/validators.py:256 #: core/validators.py:256
#, python-format #, python-format
@ -2004,27 +2007,27 @@ msgstr ""
#: views/generic/create_update.py:43 #: views/generic/create_update.py:43
#, python-format #, python-format
msgid "The %(verbose_name)s was created successfully." msgid "The %(verbose_name)s was created successfully."
msgstr "%(verbose_name)లు ఙయప్రదంగా తయారయింది" msgstr "%(verbose_name)s జయప్రదంగా తయారయింది"
#: views/generic/create_update.py:117 #: views/generic/create_update.py:117
#, python-format #, python-format
msgid "The %(verbose_name)s was updated successfully." msgid "The %(verbose_name)s was updated successfully."
msgstr "%(verbose_name)లు ఙయప్రదంగా @@" msgstr "%(verbose_name)s జయప్రదంగా @@"
#: views/generic/create_update.py:184 #: views/generic/create_update.py:184
#, python-format #, python-format
msgid "The %(verbose_name)s was deleted." msgid "The %(verbose_name)s was deleted."
msgstr "%(verbose_name)లు తీసివేయబడినది" msgstr "%(verbose_name)s తీసివేయబడినది"
#: db/models/manipulators.py:302 #: db/models/manipulators.py:302
#, python-format #, python-format
msgid "%(object)s with this %(type)s already exists for the given %(field)s." msgid "%(object)s with this %(type)s already exists for the given %(field)s."
msgstr "%(field)ల లో %(object)తో %(type) ఉన్నాయి" msgstr "%(field)s లో %(object)s తో %(type)s ఉన్నాయి"
#: db/models/fields/__init__.py:40 #: db/models/fields/__init__.py:40
#, python-format #, python-format
msgid "%(optname)s with this %(fieldname)s already exists." msgid "%(optname)s with this %(fieldname)s already exists."
msgstr "%(optname)లు తో %(fieldname) ముందే ఉన్నాయి ." msgstr "%(optname)s తో %(fieldname)s ముందే ఉన్నాయి ."
#: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265 #: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265
#: db/models/fields/__init__.py:551 db/models/fields/__init__.py:562 #: db/models/fields/__init__.py:551 db/models/fields/__init__.py:562
@ -2082,7 +2085,7 @@ msgstr "లైన్ బ్రేక్స్ కి ఇక్కడ ఆన
#: forms/__init__.py:487 forms/__init__.py:560 forms/__init__.py:599 #: forms/__init__.py:487 forms/__init__.py:560 forms/__init__.py:599
#, python-format #, python-format
msgid "Select a valid choice; '%(data)s' is not in %(choices)s." msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
msgstr "సరైనది ఎంచుకోండి; %(choices) లో '%(data)s' లేవు " msgstr "సరైనది ఎంచుకోండి; %(choices)s లో '%(data)s' లేవు "
#: forms/__init__.py:663 #: forms/__init__.py:663
msgid "The submitted file is empty." msgid "The submitted file is empty."

View File

@ -1344,7 +1344,7 @@ msgstr "四月"
#: utils/dates.py:19 #: utils/dates.py:19
msgid "may" msgid "may"
msgstr "月" msgstr "月"
#: utils/dates.py:19 #: utils/dates.py:19
msgid "jun" msgid "jun"

View File

@ -46,7 +46,7 @@ msgstr "清除全部"
#: contrib/admin/media/js/dateparse.js:32 #: contrib/admin/media/js/dateparse.js:32
#: contrib/admin/media/js/calendar.js:24 #: contrib/admin/media/js/calendar.js:24
msgid "January February March April May June July August September October November December" msgid "January February March April May June July August September October November December"
msgstr "一月 二月 三月 四月 五月 六月 六月 七月 八月 九月 十月 十一月 十二月" msgstr "一月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月"
#: contrib/admin/media/js/dateparse.js:33 #: contrib/admin/media/js/dateparse.js:33
msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"

View File

@ -38,8 +38,9 @@ USE_I18N = True
# Example: "/home/media/media.lawrence.com/" # Example: "/home/media/media.lawrence.com/"
MEDIA_ROOT = '' MEDIA_ROOT = ''
# URL that handles the media served from MEDIA_ROOT. # URL that handles the media served from MEDIA_ROOT. Make sure to use a
# Example: "http://media.lawrence.com" # trailing slash if there is a path component (optional in other cases).
# Examples: "http://media.lawrence.com", "http://example.com/media/"
MEDIA_URL = '' MEDIA_URL = ''
# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a # URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a

View File

@ -1,19 +1,32 @@
from django.core.urlresolvers import RegexURLPattern, RegexURLResolver from django.core.urlresolvers import RegexURLPattern, RegexURLResolver
from django.core.exceptions import ImproperlyConfigured
__all__ = ['handler404', 'handler500', 'include', 'patterns'] __all__ = ['handler404', 'handler500', 'include', 'patterns', 'url']
handler404 = 'django.views.defaults.page_not_found' handler404 = 'django.views.defaults.page_not_found'
handler500 = 'django.views.defaults.server_error' handler500 = 'django.views.defaults.server_error'
include = lambda urlconf_module: [urlconf_module] include = lambda urlconf_module: [urlconf_module]
def patterns(prefix, *tuples): def patterns(prefix, *args):
pattern_list = [] pattern_list = []
for t in tuples: for t in args:
regex, view_or_include = t[:2] if isinstance(t, (list, tuple)):
default_kwargs = t[2:] t = url(prefix=prefix, *t)
if type(view_or_include) == list: elif isinstance(t, RegexURLPattern):
pattern_list.append(RegexURLResolver(regex, view_or_include[0], *default_kwargs)) t.add_prefix(prefix)
else: pattern_list.append(t)
pattern_list.append(RegexURLPattern(regex, prefix and (prefix + '.' + view_or_include) or view_or_include, *default_kwargs))
return pattern_list return pattern_list
def url(regex, view, kwargs=None, name=None, prefix=''):
if type(view) == list:
# For include(...) processing.
return RegexURLResolver(regex, view[0], kwargs)
else:
if isinstance(view, basestring):
if not view:
raise ImproperlyConfigured('Empty URL pattern view name not permitted (for pattern %r)' % regex)
if prefix:
view = prefix + '.' + view
return RegexURLPattern(regex, view, kwargs, name)

View File

@ -26,7 +26,7 @@ form .aligned p, form .aligned ul { margin-left:7em; padding-left:30px; }
form .aligned table p { margin-left:0; padding-left:0; } form .aligned table p { margin-left:0; padding-left:0; }
form .aligned p.help { padding-left:38px; } form .aligned p.help { padding-left:38px; }
.aligned .vCheckboxLabel { float:none !important; display:inline; padding-left:4px; } .aligned .vCheckboxLabel { float:none !important; display:inline; padding-left:4px; }
.colM .aligned .vLargeTextField, colM .aligned .vXMLLargeTextField { width:610px; } .colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField { width:610px; }
.checkbox-row p.help { margin-left:0; padding-left:0 !important; } .checkbox-row p.help { margin-left:0; padding-left:0 !important; }
/* WIDE FIELDSETS */ /* WIDE FIELDSETS */

View File

@ -72,6 +72,7 @@ def result_headers(cl):
for i, field_name in enumerate(lookup_opts.admin.list_display): for i, field_name in enumerate(lookup_opts.admin.list_display):
try: try:
f = lookup_opts.get_field(field_name) f = lookup_opts.get_field(field_name)
admin_order_field = None
except models.FieldDoesNotExist: except models.FieldDoesNotExist:
# For non-field list_display values, check for the function # For non-field list_display values, check for the function
# attribute "short_description". If that doesn't exist, fall # attribute "short_description". If that doesn't exist, fall
@ -86,7 +87,8 @@ def result_headers(cl):
header = field_name.replace('_', ' ') header = field_name.replace('_', ' ')
# It is a non-field, but perhaps one that is sortable # It is a non-field, but perhaps one that is sortable
if not getattr(getattr(cl.model, field_name), "admin_order_field", None): admin_order_field = getattr(getattr(cl.model, field_name), "admin_order_field", None)
if not admin_order_field:
yield {"text": header} yield {"text": header}
continue continue
@ -101,7 +103,7 @@ def result_headers(cl):
th_classes = [] th_classes = []
new_order_type = 'asc' new_order_type = 'asc'
if field_name == cl.order_field: if field_name == cl.order_field or admin_order_field == cl.order_field:
th_classes.append('sorted %sending' % cl.order_type.lower()) th_classes.append('sorted %sending' % cl.order_type.lower())
new_order_type = {'asc': 'desc', 'desc': 'asc'}[cl.order_type.lower()] new_order_type = {'asc': 'desc', 'desc': 'asc'}[cl.order_type.lower()]
@ -166,8 +168,8 @@ def items_for_result(cl, result):
# Booleans are special: We use images. # Booleans are special: We use images.
elif isinstance(f, models.BooleanField) or isinstance(f, models.NullBooleanField): elif isinstance(f, models.BooleanField) or isinstance(f, models.NullBooleanField):
result_repr = _boolean_icon(field_val) result_repr = _boolean_icon(field_val)
# FloatFields are special: Zero-pad the decimals. # DecimalFields are special: Zero-pad the decimals.
elif isinstance(f, models.FloatField): elif isinstance(f, models.DecimalField):
if field_val is not None: if field_val is not None:
result_repr = ('%%.%sf' % f.decimal_places) % field_val result_repr = ('%%.%sf' % f.decimal_places) % field_val
else: else:

View File

@ -74,7 +74,7 @@ class FieldWidgetNode(template.Node):
self.bound_field_var = bound_field_var self.bound_field_var = bound_field_var
def get_nodelist(cls, klass): def get_nodelist(cls, klass):
if not cls.nodelists.has_key(klass): if klass not in cls.nodelists:
try: try:
field_class_name = klass.__name__ field_class_name = klass.__name__
template_name = "widget/%s.html" % class_name_to_underscored(field_class_name) template_name = "widget/%s.html" % class_name_to_underscored(field_class_name)
@ -94,15 +94,15 @@ class FieldWidgetNode(template.Node):
return cls.nodelists[klass] return cls.nodelists[klass]
get_nodelist = classmethod(get_nodelist) get_nodelist = classmethod(get_nodelist)
def render(self, context): def iter_render(self, context):
bound_field = template.resolve_variable(self.bound_field_var, context) bound_field = template.resolve_variable(self.bound_field_var, context)
context.push() context.push()
context['bound_field'] = bound_field context['bound_field'] = bound_field
output = self.get_nodelist(bound_field.field.__class__).render(context) for chunk in self.get_nodelist(bound_field.field.__class__).iter_render(context):
yield chunk
context.pop() context.pop()
return output
class FieldWrapper(object): class FieldWrapper(object):
def __init__(self, field ): def __init__(self, field ):
@ -157,7 +157,7 @@ class EditInlineNode(template.Node):
def __init__(self, rel_var): def __init__(self, rel_var):
self.rel_var = rel_var self.rel_var = rel_var
def render(self, context): def iter_render(self, context):
relation = template.resolve_variable(self.rel_var, context) relation = template.resolve_variable(self.rel_var, context)
context.push() context.push()
if relation.field.rel.edit_inline == models.TABULAR: if relation.field.rel.edit_inline == models.TABULAR:
@ -169,10 +169,9 @@ class EditInlineNode(template.Node):
original = context.get('original', None) original = context.get('original', None)
bound_related_object = relation.bind(context['form'], original, bound_related_object_class) bound_related_object = relation.bind(context['form'], original, bound_related_object_class)
context['bound_related_object'] = bound_related_object context['bound_related_object'] = bound_related_object
t = loader.get_template(bound_related_object.template_name()) for chunk in loader.get_template(bound_related_object.template_name()).iter_render(context):
output = t.render(context) yield chunk
context.pop() context.pop()
return output
def output_all(form_fields): def output_all(form_fields):
return ''.join([str(f) for f in form_fields]) return ''.join([str(f) for f in form_fields])

View File

@ -7,7 +7,7 @@ class AdminApplistNode(template.Node):
def __init__(self, varname): def __init__(self, varname):
self.varname = varname self.varname = varname
def render(self, context): def iter_render(self, context):
from django.db import models from django.db import models
from django.utils.text import capfirst from django.utils.text import capfirst
app_list = [] app_list = []
@ -54,7 +54,7 @@ class AdminApplistNode(template.Node):
'models': model_list, 'models': model_list,
}) })
context[self.varname] = app_list context[self.varname] = app_list
return '' return ()
def get_admin_app_list(parser, token): def get_admin_app_list(parser, token):
""" """

View File

@ -10,11 +10,14 @@ class AdminLogNode(template.Node):
def __repr__(self): def __repr__(self):
return "<GetAdminLog Node>" return "<GetAdminLog Node>"
def render(self, context): def iter_render(self, context):
if self.user is not None and not self.user.isdigit(): if self.user is None:
self.user = context[self.user].id context[self.varname] = LogEntry.objects.all().select_related()[:self.limit]
context[self.varname] = LogEntry.objects.filter(user__id__exact=self.user).select_related()[:self.limit] else:
return '' if not self.user.isdigit():
self.user = context[self.user].id
context[self.varname] = LogEntry.objects.filter(user__id__exact=self.user).select_related()[:self.limit]
return ()
class DoGetAdminLog: class DoGetAdminLog:
""" """

View File

@ -17,7 +17,7 @@ def user_add_stage(request):
if not errors: if not errors:
new_user = manipulator.save(new_data) new_user = manipulator.save(new_data)
msg = _('The %(name)s "%(obj)s" was added successfully.') % {'name': 'user', 'obj': new_user} msg = _('The %(name)s "%(obj)s" was added successfully.') % {'name': 'user', 'obj': new_user}
if request.POST.has_key("_addanother"): if "_addanother" in request.POST:
request.user.message_set.create(message=msg) request.user.message_set.create(message=msg)
return HttpResponseRedirect(request.path) return HttpResponseRedirect(request.path)
else: else:
@ -29,7 +29,7 @@ def user_add_stage(request):
return render_to_response('admin/auth/user/add_form.html', { return render_to_response('admin/auth/user/add_form.html', {
'title': _('Add user'), 'title': _('Add user'),
'form': form, 'form': form,
'is_popup': request.REQUEST.has_key('_popup'), 'is_popup': '_popup' in request.REQUEST,
'add': True, 'add': True,
'change': False, 'change': False,
'has_delete_permission': False, 'has_delete_permission': False,
@ -63,7 +63,7 @@ def user_change_password(request, id):
return render_to_response('admin/auth/user/change_password.html', { return render_to_response('admin/auth/user/change_password.html', {
'title': _('Change password: %s') % escape(user.username), 'title': _('Change password: %s') % escape(user.username),
'form': form, 'form': form,
'is_popup': request.REQUEST.has_key('_popup'), 'is_popup': '_popup' in request.REQUEST,
'add': True, 'add': True,
'change': False, 'change': False,
'has_delete_permission': False, 'has_delete_permission': False,

View File

@ -12,7 +12,7 @@ LOGIN_FORM_KEY = 'this_is_the_login_form'
def _display_login_form(request, error_message=''): def _display_login_form(request, error_message=''):
request.session.set_test_cookie() request.session.set_test_cookie()
if request.POST and request.POST.has_key('post_data'): if request.POST and 'post_data' in request.POST:
# User has failed login BUT has previously saved post data. # User has failed login BUT has previously saved post data.
post_data = request.POST['post_data'] post_data = request.POST['post_data']
elif request.POST: elif request.POST:
@ -48,7 +48,7 @@ def staff_member_required(view_func):
def _checklogin(request, *args, **kwargs): def _checklogin(request, *args, **kwargs):
if request.user.is_authenticated() and request.user.is_staff: if request.user.is_authenticated() and request.user.is_staff:
# The user is valid. Continue to the admin page. # The user is valid. Continue to the admin page.
if request.POST.has_key('post_data'): if 'post_data' in request.POST:
# User must have re-authenticated through a different window # User must have re-authenticated through a different window
# or tab. # or tab.
request.POST = _decode_post_data(request.POST['post_data']) request.POST = _decode_post_data(request.POST['post_data'])
@ -57,7 +57,7 @@ def staff_member_required(view_func):
assert hasattr(request, 'session'), "The Django admin requires session middleware to be installed. Edit your MIDDLEWARE_CLASSES setting to insert 'django.contrib.sessions.middleware.SessionMiddleware'." assert hasattr(request, 'session'), "The Django admin requires session middleware to be installed. Edit your MIDDLEWARE_CLASSES setting to insert 'django.contrib.sessions.middleware.SessionMiddleware'."
# If this isn't already the login page, display it. # If this isn't already the login page, display it.
if not request.POST.has_key(LOGIN_FORM_KEY): if LOGIN_FORM_KEY not in request.POST:
if request.POST: if request.POST:
message = _("Please log in again, because your session has expired. Don't worry: Your submission has been saved.") message = _("Please log in again, because your session has expired. Don't worry: Your submission has been saved.")
else: else:
@ -90,11 +90,9 @@ def staff_member_required(view_func):
if user.is_active and user.is_staff: if user.is_active and user.is_staff:
login(request, user) login(request, user)
# TODO: set last_login with an event. # TODO: set last_login with an event.
user.last_login = datetime.datetime.now() if 'post_data' in request.POST:
user.save()
if request.POST.has_key('post_data'):
post_data = _decode_post_data(request.POST['post_data']) post_data = _decode_post_data(request.POST['post_data'])
if post_data and not post_data.has_key(LOGIN_FORM_KEY): if post_data and LOGIN_FORM_KEY not in post_data:
# overwrite request.POST with the saved post_data, and continue # overwrite request.POST with the saved post_data, and continue
request.POST = post_data request.POST = post_data
request.user = user request.user = user

View File

@ -294,10 +294,11 @@ DATA_TYPE_MAPPING = {
'CommaSeparatedIntegerField': _('Comma-separated integers'), 'CommaSeparatedIntegerField': _('Comma-separated integers'),
'DateField' : _('Date (without time)'), 'DateField' : _('Date (without time)'),
'DateTimeField' : _('Date (with time)'), 'DateTimeField' : _('Date (with time)'),
'DecimalField' : _('Decimal number'),
'EmailField' : _('E-mail address'), 'EmailField' : _('E-mail address'),
'FileField' : _('File path'), 'FileField' : _('File path'),
'FilePathField' : _('File path'), 'FilePathField' : _('File path'),
'FloatField' : _('Decimal number'), 'FloatField' : _('Floating point number'),
'ForeignKey' : _('Integer'), 'ForeignKey' : _('Integer'),
'ImageField' : _('File path'), 'ImageField' : _('File path'),
'IntegerField' : _('Integer'), 'IntegerField' : _('Integer'),

View File

@ -257,17 +257,17 @@ def add_stage(request, app_label, model_name, show_delete=False, form_url='', po
msg = _('The %(name)s "%(obj)s" was added successfully.') % {'name': opts.verbose_name, 'obj': new_object} msg = _('The %(name)s "%(obj)s" was added successfully.') % {'name': opts.verbose_name, 'obj': new_object}
# Here, we distinguish between different save types by checking for # Here, we distinguish between different save types by checking for
# the presence of keys in request.POST. # the presence of keys in request.POST.
if request.POST.has_key("_continue"): if "_continue" in request.POST:
request.user.message_set.create(message=msg + ' ' + _("You may edit it again below.")) request.user.message_set.create(message=msg + ' ' + _("You may edit it again below."))
if request.POST.has_key("_popup"): if "_popup" in request.POST:
post_url_continue += "?_popup=1" post_url_continue += "?_popup=1"
return HttpResponseRedirect(post_url_continue % pk_value) return HttpResponseRedirect(post_url_continue % pk_value)
if request.POST.has_key("_popup"): if "_popup" in request.POST:
if type(pk_value) is str: # Quote if string, so JavaScript doesn't think it's a variable. if type(pk_value) is str: # Quote if string, so JavaScript doesn't think it's a variable.
pk_value = '"%s"' % pk_value.replace('"', '\\"') pk_value = '"%s"' % pk_value.replace('"', '\\"')
return HttpResponse('<script type="text/javascript">opener.dismissAddAnotherPopup(window, %s, "%s");</script>' % \ return HttpResponse('<script type="text/javascript">opener.dismissAddAnotherPopup(window, %s, "%s");</script>' % \
(pk_value, str(new_object).replace('"', '\\"'))) (pk_value, str(new_object).replace('"', '\\"')))
elif request.POST.has_key("_addanother"): elif "_addanother" in request.POST:
request.user.message_set.create(message=msg + ' ' + (_("You may add another %s below.") % opts.verbose_name)) request.user.message_set.create(message=msg + ' ' + (_("You may add another %s below.") % opts.verbose_name))
return HttpResponseRedirect(request.path) return HttpResponseRedirect(request.path)
else: else:
@ -288,7 +288,7 @@ def add_stage(request, app_label, model_name, show_delete=False, form_url='', po
c = template.RequestContext(request, { c = template.RequestContext(request, {
'title': _('Add %s') % opts.verbose_name, 'title': _('Add %s') % opts.verbose_name,
'form': form, 'form': form,
'is_popup': request.REQUEST.has_key('_popup'), 'is_popup': '_popup' in request.REQUEST,
'show_delete': show_delete, 'show_delete': show_delete,
}) })
@ -308,7 +308,7 @@ def change_stage(request, app_label, model_name, object_id):
if not request.user.has_perm(app_label + '.' + opts.get_change_permission()): if not request.user.has_perm(app_label + '.' + opts.get_change_permission()):
raise PermissionDenied raise PermissionDenied
if request.POST and request.POST.has_key("_saveasnew"): if request.POST and "_saveasnew" in request.POST:
return add_stage(request, app_label, model_name, form_url='../../add/') return add_stage(request, app_label, model_name, form_url='../../add/')
try: try:
@ -343,16 +343,16 @@ def change_stage(request, app_label, model_name, object_id):
LogEntry.objects.log_action(request.user.id, ContentType.objects.get_for_model(model).id, pk_value, str(new_object), CHANGE, change_message) LogEntry.objects.log_action(request.user.id, ContentType.objects.get_for_model(model).id, pk_value, str(new_object), CHANGE, change_message)
msg = _('The %(name)s "%(obj)s" was changed successfully.') % {'name': opts.verbose_name, 'obj': new_object} msg = _('The %(name)s "%(obj)s" was changed successfully.') % {'name': opts.verbose_name, 'obj': new_object}
if request.POST.has_key("_continue"): if "_continue" in request.POST:
request.user.message_set.create(message=msg + ' ' + _("You may edit it again below.")) request.user.message_set.create(message=msg + ' ' + _("You may edit it again below."))
if request.REQUEST.has_key('_popup'): if '_popup' in request.REQUEST:
return HttpResponseRedirect(request.path + "?_popup=1") return HttpResponseRedirect(request.path + "?_popup=1")
else: else:
return HttpResponseRedirect(request.path) return HttpResponseRedirect(request.path)
elif request.POST.has_key("_saveasnew"): elif "_saveasnew" in request.POST:
request.user.message_set.create(message=_('The %(name)s "%(obj)s" was added successfully. You may edit it again below.') % {'name': opts.verbose_name, 'obj': new_object}) request.user.message_set.create(message=_('The %(name)s "%(obj)s" was added successfully. You may edit it again below.') % {'name': opts.verbose_name, 'obj': new_object})
return HttpResponseRedirect("../%s/" % pk_value) return HttpResponseRedirect("../%s/" % pk_value)
elif request.POST.has_key("_addanother"): elif "_addanother" in request.POST:
request.user.message_set.create(message=msg + ' ' + (_("You may add another %s below.") % opts.verbose_name)) request.user.message_set.create(message=msg + ' ' + (_("You may add another %s below.") % opts.verbose_name))
return HttpResponseRedirect("../add/") return HttpResponseRedirect("../add/")
else: else:
@ -392,7 +392,7 @@ def change_stage(request, app_label, model_name, object_id):
'form': form, 'form': form,
'object_id': object_id, 'object_id': object_id,
'original': manipulator.original_object, 'original': manipulator.original_object,
'is_popup': request.REQUEST.has_key('_popup'), 'is_popup': '_popup' in request.REQUEST,
}) })
return render_change_form(model, manipulator, c, change=True) return render_change_form(model, manipulator, c, change=True)
change_stage = staff_member_required(never_cache(change_stage)) change_stage = staff_member_required(never_cache(change_stage))
@ -558,12 +558,12 @@ class ChangeList(object):
self.page_num = int(request.GET.get(PAGE_VAR, 0)) self.page_num = int(request.GET.get(PAGE_VAR, 0))
except ValueError: except ValueError:
self.page_num = 0 self.page_num = 0
self.show_all = request.GET.has_key(ALL_VAR) self.show_all = ALL_VAR in request.GET
self.is_popup = request.GET.has_key(IS_POPUP_VAR) self.is_popup = IS_POPUP_VAR in request.GET
self.params = dict(request.GET.items()) self.params = dict(request.GET.items())
if self.params.has_key(PAGE_VAR): if PAGE_VAR in self.params:
del self.params[PAGE_VAR] del self.params[PAGE_VAR]
if self.params.has_key(ERROR_FLAG): if ERROR_FLAG in self.params:
del self.params[ERROR_FLAG] del self.params[ERROR_FLAG]
self.order_field, self.order_type = self.get_ordering() self.order_field, self.order_type = self.get_ordering()
@ -594,7 +594,7 @@ class ChangeList(object):
if k.startswith(r): if k.startswith(r):
del p[k] del p[k]
for k, v in new_params.items(): for k, v in new_params.items():
if p.has_key(k) and v is None: if k in p and v is None:
del p[k] del p[k]
elif v is not None: elif v is not None:
p[k] = v p[k] = v
@ -656,7 +656,7 @@ class ChangeList(object):
order_field, order_type = ordering[0][1:], 'desc' order_field, order_type = ordering[0][1:], 'desc'
else: else:
order_field, order_type = ordering[0], 'asc' order_field, order_type = ordering[0], 'asc'
if params.has_key(ORDER_VAR): if ORDER_VAR in params:
try: try:
field_name = lookup_opts.admin.list_display[int(params[ORDER_VAR])] field_name = lookup_opts.admin.list_display[int(params[ORDER_VAR])]
try: try:
@ -674,7 +674,7 @@ class ChangeList(object):
order_field = f.name order_field = f.name
except (IndexError, ValueError): except (IndexError, ValueError):
pass # Invalid ordering specified. Just use the default. pass # Invalid ordering specified. Just use the default.
if params.has_key(ORDER_TYPE_VAR) and params[ORDER_TYPE_VAR] in ('asc', 'desc'): if ORDER_TYPE_VAR in params and params[ORDER_TYPE_VAR] in ('asc', 'desc'):
order_type = params[ORDER_TYPE_VAR] order_type = params[ORDER_TYPE_VAR]
return order_field, order_type return order_field, order_type
@ -682,7 +682,7 @@ class ChangeList(object):
qs = self.manager.get_query_set() qs = self.manager.get_query_set()
lookup_params = self.params.copy() # a dictionary of the query string lookup_params = self.params.copy() # a dictionary of the query string
for i in (ALL_VAR, ORDER_VAR, ORDER_TYPE_VAR, SEARCH_VAR, IS_POPUP_VAR): for i in (ALL_VAR, ORDER_VAR, ORDER_TYPE_VAR, SEARCH_VAR, IS_POPUP_VAR):
if lookup_params.has_key(i): if i in lookup_params:
del lookup_params[i] del lookup_params[i]
# Apply lookup parameters from the query string. # Apply lookup parameters from the query string.

View File

@ -1,8 +1,8 @@
import datetime
from django.core.exceptions import ImproperlyConfigured from django.core.exceptions import ImproperlyConfigured
SESSION_KEY = '_auth_user_id' SESSION_KEY = '_auth_user_id'
BACKEND_SESSION_KEY = '_auth_user_backend' BACKEND_SESSION_KEY = '_auth_user_backend'
LOGIN_URL = '/accounts/login/'
REDIRECT_FIELD_NAME = 'next' REDIRECT_FIELD_NAME = 'next'
def load_backend(path): def load_backend(path):
@ -49,8 +49,12 @@ def login(request, user):
if user is None: if user is None:
user = request.user user = request.user
# TODO: It would be nice to support different login methods, like signed cookies. # TODO: It would be nice to support different login methods, like signed cookies.
user.last_login = datetime.datetime.now()
user.save()
request.session[SESSION_KEY] = user.id request.session[SESSION_KEY] = user.id
request.session[BACKEND_SESSION_KEY] = user.backend request.session[BACKEND_SESSION_KEY] = user.backend
if hasattr(request, 'user'):
request.user = user
def logout(request): def logout(request):
""" """
@ -64,6 +68,9 @@ def logout(request):
del request.session[BACKEND_SESSION_KEY] del request.session[BACKEND_SESSION_KEY]
except KeyError: except KeyError:
pass pass
if hasattr(request, 'user'):
from django.contrib.auth.models import AnonymousUser
request.user = AnonymousUser()
def get_user(request): def get_user(request):
from django.contrib.auth.models import AnonymousUser from django.contrib.auth.models import AnonymousUser

View File

@ -1,13 +1,16 @@
from django.contrib.auth import LOGIN_URL, REDIRECT_FIELD_NAME from django.contrib.auth import REDIRECT_FIELD_NAME
from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect
from urllib import quote from urllib import quote
def user_passes_test(test_func, login_url=LOGIN_URL): def user_passes_test(test_func, login_url=None):
""" """
Decorator for views that checks that the user passes the given test, Decorator for views that checks that the user passes the given test,
redirecting to the log-in page if necessary. The test should be a callable redirecting to the log-in page if necessary. The test should be a callable
that takes the user object and returns True if the user passes. that takes the user object and returns True if the user passes.
""" """
if not login_url:
from django.conf import settings
login_url = settings.LOGIN_URL
def _dec(view_func): def _dec(view_func):
def _checklogin(request, *args, **kwargs): def _checklogin(request, *args, **kwargs):
if test_func(request.user): if test_func(request.user):
@ -27,7 +30,7 @@ login_required.__doc__ = (
""" """
) )
def permission_required(perm, login_url=LOGIN_URL): def permission_required(perm, login_url=None):
""" """
Decorator for views that checks whether a user has a particular permission Decorator for views that checks whether a user has a particular permission
enabled, redirecting to the log-in page if necessary. enabled, redirecting to the log-in page if necessary.

View File

@ -17,6 +17,12 @@ def check_password(raw_password, enc_password):
elif algo == 'sha1': elif algo == 'sha1':
import sha import sha
return hsh == sha.new(salt+raw_password).hexdigest() return hsh == sha.new(salt+raw_password).hexdigest()
elif algo == 'crypt':
try:
import crypt
except ImportError:
raise ValueError, "Crypt password algorithm not supported in this environment."
return hsh == crypt.crypt(raw_password, salt)
raise ValueError, "Got unknown password algorithm type in password." raise ValueError, "Got unknown password algorithm type in password."
class SiteProfileNotAvailable(Exception): class SiteProfileNotAvailable(Exception):
@ -38,6 +44,7 @@ class Permission(models.Model):
name = models.CharField(_('name'), maxlength=50) name = models.CharField(_('name'), maxlength=50)
content_type = models.ForeignKey(ContentType) content_type = models.ForeignKey(ContentType)
codename = models.CharField(_('codename'), maxlength=100) codename = models.CharField(_('codename'), maxlength=100)
class Meta: class Meta:
verbose_name = _('permission') verbose_name = _('permission')
verbose_name_plural = _('permissions') verbose_name_plural = _('permissions')
@ -45,7 +52,7 @@ class Permission(models.Model):
ordering = ('content_type', 'codename') ordering = ('content_type', 'codename')
def __str__(self): def __str__(self):
return "%s | %s" % (self.content_type, self.name) return "%s | %s | %s" % (self.content_type.app_label, self.content_type, self.name)
class Group(models.Model): class Group(models.Model):
"""Groups are a generic way of categorizing users to apply permissions, or some other label, to those users. A user can belong to any number of groups. """Groups are a generic way of categorizing users to apply permissions, or some other label, to those users. A user can belong to any number of groups.
@ -56,10 +63,12 @@ class Group(models.Model):
""" """
name = models.CharField(_('name'), maxlength=80, unique=True) name = models.CharField(_('name'), maxlength=80, unique=True)
permissions = models.ManyToManyField(Permission, verbose_name=_('permissions'), blank=True, filter_interface=models.HORIZONTAL) permissions = models.ManyToManyField(Permission, verbose_name=_('permissions'), blank=True, filter_interface=models.HORIZONTAL)
class Meta: class Meta:
verbose_name = _('group') verbose_name = _('group')
verbose_name_plural = _('groups') verbose_name_plural = _('groups')
ordering = ('name',) ordering = ('name',)
class Admin: class Admin:
search_fields = ('name',) search_fields = ('name',)
@ -95,16 +104,18 @@ class User(models.Model):
is_staff = models.BooleanField(_('staff status'), default=False, help_text=_("Designates whether the user can log into this admin site.")) is_staff = models.BooleanField(_('staff status'), default=False, help_text=_("Designates whether the user can log into this admin site."))
is_active = models.BooleanField(_('active'), default=True, help_text=_("Designates whether this user can log into the Django admin. Unselect this instead of deleting accounts.")) is_active = models.BooleanField(_('active'), default=True, help_text=_("Designates whether this user can log into the Django admin. Unselect this instead of deleting accounts."))
is_superuser = models.BooleanField(_('superuser status'), default=False, help_text=_("Designates that this user has all permissions without explicitly assigning them.")) is_superuser = models.BooleanField(_('superuser status'), default=False, help_text=_("Designates that this user has all permissions without explicitly assigning them."))
last_login = models.DateTimeField(_('last login'), default=models.LazyDate()) last_login = models.DateTimeField(_('last login'), default=datetime.datetime.now)
date_joined = models.DateTimeField(_('date joined'), default=models.LazyDate()) date_joined = models.DateTimeField(_('date joined'), default=datetime.datetime.now)
groups = models.ManyToManyField(Group, verbose_name=_('groups'), blank=True, groups = models.ManyToManyField(Group, verbose_name=_('groups'), blank=True,
help_text=_("In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in.")) help_text=_("In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in."))
user_permissions = models.ManyToManyField(Permission, verbose_name=_('user permissions'), blank=True, filter_interface=models.HORIZONTAL) user_permissions = models.ManyToManyField(Permission, verbose_name=_('user permissions'), blank=True, filter_interface=models.HORIZONTAL)
objects = UserManager() objects = UserManager()
class Meta: class Meta:
verbose_name = _('user') verbose_name = _('user')
verbose_name_plural = _('users') verbose_name_plural = _('users')
ordering = ('username',) ordering = ('username',)
class Admin: class Admin:
fields = ( fields = (
(None, {'fields': ('username', 'password')}), (None, {'fields': ('username', 'password')}),
@ -268,7 +279,7 @@ class AnonymousUser(object):
pass pass
def __str__(self): def __str__(self):
return 'AnonymousUser' return _('AnonymousUser')
def __eq__(self, other): def __eq__(self, other):
return isinstance(other, self.__class__) return isinstance(other, self.__class__)

View File

@ -6,7 +6,7 @@ from django.template import RequestContext
from django.contrib.sites.models import Site from django.contrib.sites.models import Site
from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.contrib.auth import LOGIN_URL, REDIRECT_FIELD_NAME from django.contrib.auth import REDIRECT_FIELD_NAME
def login(request, template_name='registration/login.html'): def login(request, template_name='registration/login.html'):
"Displays the login form and handles the login action." "Displays the login form and handles the login action."
@ -17,7 +17,8 @@ def login(request, template_name='registration/login.html'):
if not errors: if not errors:
# Light security check -- make sure redirect_to isn't garbage. # Light security check -- make sure redirect_to isn't garbage.
if not redirect_to or '://' in redirect_to or ' ' in redirect_to: if not redirect_to or '://' in redirect_to or ' ' in redirect_to:
redirect_to = '/accounts/profile/' from django.conf import settings
redirect_to = settings.LOGIN_REDIRECT_URL
from django.contrib.auth import login from django.contrib.auth import login
login(request, manipulator.get_user()) login(request, manipulator.get_user())
request.session.delete_test_cookie() request.session.delete_test_cookie()
@ -41,12 +42,18 @@ def logout(request, next_page=None, template_name='registration/logged_out.html'
# Redirect to this page until the session has been cleared. # Redirect to this page until the session has been cleared.
return HttpResponseRedirect(next_page or request.path) return HttpResponseRedirect(next_page or request.path)
def logout_then_login(request, login_url=LOGIN_URL): def logout_then_login(request, login_url=None):
"Logs out the user if he is logged in. Then redirects to the log-in page." "Logs out the user if he is logged in. Then redirects to the log-in page."
if not login_url:
from django.conf import settings
login_url = settings.LOGIN_URL
return logout(request, login_url) return logout(request, login_url)
def redirect_to_login(next, login_url=LOGIN_URL): def redirect_to_login(next, login_url=None):
"Redirects the user to the login page, passing the given 'next' page" "Redirects the user to the login page, passing the given 'next' page"
if not login_url:
from django.conf import settings
login_url = settings.LOGIN_URL
return HttpResponseRedirect('%s?%s=%s' % (login_url, REDIRECT_FIELD_NAME, next)) return HttpResponseRedirect('%s?%s=%s' % (login_url, REDIRECT_FIELD_NAME, next))
def password_reset(request, is_admin_site=False, template_name='registration/password_reset_form.html', def password_reset(request, is_admin_site=False, template_name='registration/password_reset_form.html',

View File

@ -23,16 +23,19 @@ class LatestFreeCommentsFeed(Feed):
self._site = Site.objects.get_current() self._site = Site.objects.get_current()
return "Latest comments on %s" % self._site.name return "Latest comments on %s" % self._site.name
def get_query_set(self):
return self.comments_class.objects.filter(site__pk=settings.SITE_ID, is_public=True)
def items(self): def items(self):
return self.comments_class.objects.filter(site__pk=settings.SITE_ID, is_public=True)[:40] return self.get_query_set()[:40]
class LatestCommentsFeed(LatestFreeCommentsFeed): class LatestCommentsFeed(LatestFreeCommentsFeed):
"""Feed of latest free comments on the current site""" """Feed of latest free comments on the current site"""
comments_class = Comment comments_class = Comment
def items(self): def get_query_set(self):
qs = LatestFreeCommentsFeed.items(self) qs = super(LatestCommentsFeed, self).get_query_set()
qs = qs.filter(is_removed=False) qs = qs.filter(is_removed=False)
if settings.COMMENTS_BANNED_USERS_GROUP: if settings.COMMENTS_BANNED_USERS_GROUP:
where = ['user_id NOT IN (SELECT user_id FROM auth_users_group WHERE group_id = %s)'] where = ['user_id NOT IN (SELECT user_id FROM auth_users_group WHERE group_id = %s)']

View File

@ -209,7 +209,7 @@ class FreeComment(models.Model):
class KarmaScoreManager(models.Manager): class KarmaScoreManager(models.Manager):
def vote(self, user_id, comment_id, score): def vote(self, user_id, comment_id, score):
try: try:
karma = self.objects.get(comment__pk=comment_id, user__pk=user_id) karma = self.get(comment__pk=comment_id, user__pk=user_id)
except self.model.DoesNotExist: except self.model.DoesNotExist:
karma = self.model(None, user_id=user_id, comment_id=comment_id, score=score, scored_date=datetime.datetime.now()) karma = self.model(None, user_id=user_id, comment_id=comment_id, score=score, scored_date=datetime.datetime.now())
karma.save() karma.save()

View File

@ -3,7 +3,7 @@
<form {% if photos_optional or photos_required %}enctype="multipart/form-data" {% endif %}action="/comments/post/" method="post"> <form {% if photos_optional or photos_required %}enctype="multipart/form-data" {% endif %}action="/comments/post/" method="post">
{% if user.is_authenticated %} {% if user.is_authenticated %}
<p>{% trans "Username:" %} <strong>{{ user.username }}</strong> (<a href="/accounts/logout/">{% trans "Log out" %}</a>)</p> <p>{% trans "Username:" %} <strong>{{ user.username }}</strong> (<a href="{{ logout_url }}">{% trans "Log out" %}</a>)</p>
{% else %} {% else %}
<p><label for="id_username">{% trans "Username:" %}</label> <input type="text" name="username" id="id_username" /><br />{% trans "Password:" %} <input type="password" name="password" id="id_password" /> (<a href="/accounts/password_reset/">{% trans "Forgotten your password?" %}</a>)</p> <p><label for="id_username">{% trans "Username:" %}</label> <input type="text" name="username" id="id_username" /><br />{% trans "Password:" %} <input type="password" name="password" id="id_password" /> (<a href="/accounts/password_reset/">{% trans "Forgotten your password?" %}</a>)</p>
{% endif %} {% endif %}

View File

@ -24,7 +24,8 @@ class CommentFormNode(template.Node):
self.photo_options, self.rating_options = photo_options, rating_options self.photo_options, self.rating_options = photo_options, rating_options
self.is_public = is_public self.is_public = is_public
def render(self, context): def iter_render(self, context):
from django.conf import settings
from django.utils.text import normalize_newlines from django.utils.text import normalize_newlines
import base64 import base64
context.push() context.push()
@ -32,7 +33,7 @@ class CommentFormNode(template.Node):
try: try:
self.obj_id = template.resolve_variable(self.obj_id_lookup_var, context) self.obj_id = template.resolve_variable(self.obj_id_lookup_var, context)
except template.VariableDoesNotExist: except template.VariableDoesNotExist:
return '' return
# Validate that this object ID is valid for this content-type. # Validate that this object ID is valid for this content-type.
# We only have to do this validation if obj_id_lookup_var is provided, # We only have to do this validation if obj_id_lookup_var is provided,
# because do_comment_form() validates hard-coded object IDs. # because do_comment_form() validates hard-coded object IDs.
@ -64,10 +65,11 @@ class CommentFormNode(template.Node):
if self.rating_options: if self.rating_options:
context['rating_range'], context['rating_choices'] = Comment.objects.get_rating_options(self.rating_options) context['rating_range'], context['rating_choices'] = Comment.objects.get_rating_options(self.rating_options)
context['hash'] = Comment.objects.get_security_hash(context['options'], context['photo_options'], context['rating_options'], context['target']) context['hash'] = Comment.objects.get_security_hash(context['options'], context['photo_options'], context['rating_options'], context['target'])
context['logout_url'] = settings.LOGOUT_URL
default_form = loader.get_template(COMMENT_FORM) default_form = loader.get_template(COMMENT_FORM)
output = default_form.render(context) for chunk in default_form.iter_render(context):
yield chunk
context.pop() context.pop()
return output
class CommentCountNode(template.Node): class CommentCountNode(template.Node):
def __init__(self, package, module, context_var_name, obj_id, var_name, free): def __init__(self, package, module, context_var_name, obj_id, var_name, free):
@ -75,7 +77,7 @@ class CommentCountNode(template.Node):
self.context_var_name, self.obj_id = context_var_name, obj_id self.context_var_name, self.obj_id = context_var_name, obj_id
self.var_name, self.free = var_name, free self.var_name, self.free = var_name, free
def render(self, context): def iter_render(self, context):
from django.conf import settings from django.conf import settings
manager = self.free and FreeComment.objects or Comment.objects manager = self.free and FreeComment.objects or Comment.objects
if self.context_var_name is not None: if self.context_var_name is not None:
@ -84,7 +86,7 @@ class CommentCountNode(template.Node):
content_type__app_label__exact=self.package, content_type__app_label__exact=self.package,
content_type__model__exact=self.module, site__id__exact=settings.SITE_ID).count() content_type__model__exact=self.module, site__id__exact=settings.SITE_ID).count()
context[self.var_name] = comment_count context[self.var_name] = comment_count
return '' return ()
class CommentListNode(template.Node): class CommentListNode(template.Node):
def __init__(self, package, module, context_var_name, obj_id, var_name, free, ordering, extra_kwargs=None): def __init__(self, package, module, context_var_name, obj_id, var_name, free, ordering, extra_kwargs=None):
@ -94,14 +96,14 @@ class CommentListNode(template.Node):
self.ordering = ordering self.ordering = ordering
self.extra_kwargs = extra_kwargs or {} self.extra_kwargs = extra_kwargs or {}
def render(self, context): def iter_render(self, context):
from django.conf import settings from django.conf import settings
get_list_function = self.free and FreeComment.objects.filter or Comment.objects.get_list_with_karma get_list_function = self.free and FreeComment.objects.filter or Comment.objects.get_list_with_karma
if self.context_var_name is not None: if self.context_var_name is not None:
try: try:
self.obj_id = template.resolve_variable(self.context_var_name, context) self.obj_id = template.resolve_variable(self.context_var_name, context)
except template.VariableDoesNotExist: except template.VariableDoesNotExist:
return '' return ()
kwargs = { kwargs = {
'object_id__exact': self.obj_id, 'object_id__exact': self.obj_id,
'content_type__app_label__exact': self.package, 'content_type__app_label__exact': self.package,
@ -114,7 +116,7 @@ class CommentListNode(template.Node):
comment_list = get_list_function(**kwargs).order_by(self.ordering + 'submit_date').select_related() comment_list = get_list_function(**kwargs).order_by(self.ordering + 'submit_date').select_related()
if not self.free: if not self.free:
if context.has_key('user') and context['user'].is_authenticated(): if 'user' in context and context['user'].is_authenticated():
user_id = context['user'].id user_id = context['user'].id
context['user_can_moderate_comments'] = Comment.objects.user_is_moderator(context['user']) context['user_can_moderate_comments'] = Comment.objects.user_is_moderator(context['user'])
else: else:
@ -125,7 +127,7 @@ class CommentListNode(template.Node):
comment_list = [c for c in comment_list if not c.is_hidden or (user_id == c.user_id)] comment_list = [c for c in comment_list if not c.is_hidden or (user_id == c.user_id)]
context[self.var_name] = comment_list context[self.var_name] = comment_list
return '' return ()
class DoCommentForm: class DoCommentForm:
""" """

View File

@ -217,10 +217,10 @@ def post_comment(request):
errors = manipulator.get_validation_errors(new_data) errors = manipulator.get_validation_errors(new_data)
# If user gave correct username/password and wasn't already logged in, log them in # If user gave correct username/password and wasn't already logged in, log them in
# so they don't have to enter a username/password again. # so they don't have to enter a username/password again.
if manipulator.get_user() and not manipulator.get_user().is_authenticated() and new_data.has_key('password') and manipulator.get_user().check_password(new_data['password']): if manipulator.get_user() and not manipulator.get_user().is_authenticated() and 'password' in new_data and manipulator.get_user().check_password(new_data['password']):
from django.contrib.auth import login from django.contrib.auth import login
login(request, manipulator.get_user()) login(request, manipulator.get_user())
if errors or request.POST.has_key('preview'): if errors or 'preview' in request.POST:
class CommentFormWrapper(oldforms.FormWrapper): class CommentFormWrapper(oldforms.FormWrapper):
def __init__(self, manipulator, new_data, errors, rating_choices): def __init__(self, manipulator, new_data, errors, rating_choices):
oldforms.FormWrapper.__init__(self, manipulator, new_data, errors) oldforms.FormWrapper.__init__(self, manipulator, new_data, errors)
@ -244,7 +244,7 @@ def post_comment(request):
'rating_range': rating_range, 'rating_range': rating_range,
'rating_choices': rating_choices, 'rating_choices': rating_choices,
}, context_instance=RequestContext(request)) }, context_instance=RequestContext(request))
elif request.POST.has_key('post'): elif 'post' in request.POST:
# If the IP is banned, mail the admins, do NOT save the comment, and # If the IP is banned, mail the admins, do NOT save the comment, and
# serve up the "Thanks for posting" page as if the comment WAS posted. # serve up the "Thanks for posting" page as if the comment WAS posted.
if request.META['REMOTE_ADDR'] in settings.BANNED_IPS: if request.META['REMOTE_ADDR'] in settings.BANNED_IPS:
@ -298,7 +298,7 @@ def post_free_comment(request):
new_data['is_public'] = IS_PUBLIC in option_list new_data['is_public'] = IS_PUBLIC in option_list
manipulator = PublicFreeCommentManipulator() manipulator = PublicFreeCommentManipulator()
errors = manipulator.get_validation_errors(new_data) errors = manipulator.get_validation_errors(new_data)
if errors or request.POST.has_key('preview'): if errors or 'preview' in request.POST:
comment = errors and '' or manipulator.get_comment(new_data) comment = errors and '' or manipulator.get_comment(new_data)
return render_to_response('comments/free_preview.html', { return render_to_response('comments/free_preview.html', {
'comment': comment, 'comment': comment,
@ -307,7 +307,7 @@ def post_free_comment(request):
'target': target, 'target': target,
'hash': security_hash, 'hash': security_hash,
}, context_instance=RequestContext(request)) }, context_instance=RequestContext(request))
elif request.POST.has_key('post'): elif 'post' in request.POST:
# If the IP is banned, mail the admins, do NOT save the comment, and # If the IP is banned, mail the admins, do NOT save the comment, and
# serve up the "Thanks for posting" page as if the comment WAS posted. # serve up the "Thanks for posting" page as if the comment WAS posted.
if request.META['REMOTE_ADDR'] in settings.BANNED_IPS: if request.META['REMOTE_ADDR'] in settings.BANNED_IPS:
@ -330,7 +330,7 @@ def comment_was_posted(request):
The object the comment was posted on The object the comment was posted on
""" """
obj = None obj = None
if request.GET.has_key('c'): if 'c' in request.GET:
content_type_id, object_id = request.GET['c'].split(':') content_type_id, object_id = request.GET['c'].split(':')
try: try:
content_type = ContentType.objects.get(pk=content_type_id) content_type = ContentType.objects.get(pk=content_type_id)

View File

@ -37,7 +37,7 @@ class GenericForeignKey(object):
def instance_pre_init(self, signal, sender, args, kwargs): def instance_pre_init(self, signal, sender, args, kwargs):
# Handle initalizing an object with the generic FK instaed of # Handle initalizing an object with the generic FK instaed of
# content-type/object-id fields. # content-type/object-id fields.
if kwargs.has_key(self.name): if self.name in kwargs:
value = kwargs.pop(self.name) value = kwargs.pop(self.name)
kwargs[self.ct_field] = self.get_content_type(value) kwargs[self.ct_field] = self.get_content_type(value)
kwargs[self.fk_field] = value._get_pk_val() kwargs[self.fk_field] = value._get_pk_val()

View File

@ -0,0 +1 @@
from django.contrib.databrowse.sites import DatabrowsePlugin, ModelDatabrowse, DatabrowseSite, site

View File

@ -0,0 +1,192 @@
"""
These classes are light wrappers around Django's database API that provide
convenience functionality and permalink functions for the databrowse app.
"""
from django.db import models
from django.utils import dateformat
from django.utils.text import capfirst
from django.utils.translation import get_date_formats
EMPTY_VALUE = '(None)'
class EasyModel(object):
def __init__(self, site, model):
self.site = site
self.model = model
self.model_list = site.registry.keys()
self.verbose_name = model._meta.verbose_name
self.verbose_name_plural = model._meta.verbose_name_plural
def __repr__(self):
return '<EasyModel for %s>' % self.model._meta.object_name
def model_databrowse(self):
"Returns the ModelDatabrowse class for this model."
return self.site.registry[self.model]
def url(self):
return '%s%s/%s/' % (self.site.root_url, self.model._meta.app_label, self.model._meta.module_name)
def objects(self, **kwargs):
for obj in self.model._default_manager.filter(**kwargs):
yield EasyInstance(self, obj)
def object_by_pk(self, pk):
return EasyInstance(self, self.model._default_manager.get(pk=pk))
def sample_objects(self):
for obj in self.model._default_manager.all()[:3]:
yield EasyInstance(self, obj)
def field(self, name):
try:
f = self.model._meta.get_field(name)
except models.FieldDoesNotExist:
return None
return EasyField(self, f)
def fields(self):
return [EasyField(self, f) for f in (self.model._meta.fields + self.model._meta.many_to_many)]
class EasyField(object):
def __init__(self, easy_model, field):
self.model, self.field = easy_model, field
def __repr__(self):
return '<EasyField for %s.%s>' % (self.model.model._meta.object_name, self.field.name)
def choices(self):
for value, label in self.field.choices:
yield EasyChoice(self.model, self, value, label)
def url(self):
if self.field.choices:
return '%s%s/%s/%s/' % (self.model.site.root_url, self.model.model._meta.app_label, self.model.model._meta.module_name, self.field.name)
elif self.field.rel:
return '%s%s/%s/' % (self.model.site.root_url, self.model.model._meta.app_label, self.model.model._meta.module_name)
class EasyChoice(object):
def __init__(self, easy_model, field, value, label):
self.model, self.field = easy_model, field
self.value, self.label = value, label
def __repr__(self):
return '<EasyChoice for %s.%s>' % (self.model.model._meta.object_name, self.field.name)
def url(self):
return '%s%s/%s/%s/%s/' % (self.model.site.root_url, self.model.model._meta.app_label, self.model.model._meta.module_name, self.field.field.name, self.value)
class EasyInstance(object):
def __init__(self, easy_model, instance):
self.model, self.instance = easy_model, instance
def __repr__(self):
return '<EasyInstance for %s (%s)>' % (self.model.model._meta.object_name, self.instance._get_pk_val())
def __str__(self):
val = str(self.instance)
if len(val) > 30:
return val[:30] + '...'
return val
def pk(self):
return self.instance._get_pk_val()
def url(self):
return '%s%s/%s/objects/%s/' % (self.model.site.root_url, self.model.model._meta.app_label, self.model.model._meta.module_name, self.pk())
def fields(self):
"""
Generator that yields EasyInstanceFields for each field in this
EasyInstance's model.
"""
for f in self.model.model._meta.fields + self.model.model._meta.many_to_many:
yield EasyInstanceField(self.model, self, f)
def related_objects(self):
"""
Generator that yields dictionaries of all models that have this
EasyInstance's model as a ForeignKey or ManyToManyField, along with
lists of related objects.
"""
for rel_object in self.model.model._meta.get_all_related_objects() + self.model.model._meta.get_all_related_many_to_many_objects():
if rel_object.model not in self.model.model_list:
continue # Skip models that aren't in the model_list
em = EasyModel(self.model.site, rel_object.model)
yield {
'model': em,
'related_field': rel_object.field.verbose_name,
'object_list': [EasyInstance(em, i) for i in getattr(self.instance, rel_object.get_accessor_name()).all()],
}
class EasyInstanceField(object):
def __init__(self, easy_model, instance, field):
self.model, self.field, self.instance = easy_model, field, instance
self.raw_value = getattr(instance.instance, field.name)
def __repr__(self):
return '<EasyInstanceField for %s.%s>' % (self.model.model._meta.object_name, self.field.name)
def values(self):
"""
Returns a list of values for this field for this instance. It's a list
so we can accomodate many-to-many fields.
"""
# This import is deliberately inside the function because it causes
# some settings to be imported, and we don't want to do that at the
# module level.
if self.field.rel:
if isinstance(self.field.rel, models.ManyToOneRel):
objs = getattr(self.instance.instance, self.field.name)
elif isinstance(self.field.rel, models.ManyToManyRel): # ManyToManyRel
return list(getattr(self.instance.instance, self.field.name).all())
elif self.field.choices:
objs = dict(self.field.choices).get(self.raw_value, EMPTY_VALUE)
elif isinstance(self.field, models.DateField) or isinstance(self.field, models.TimeField):
if self.raw_value:
date_format, datetime_format, time_format = get_date_formats()
if isinstance(self.field, models.DateTimeField):
objs = capfirst(dateformat.format(self.raw_value, datetime_format))
elif isinstance(self.field, models.TimeField):
objs = capfirst(dateformat.time_format(self.raw_value, time_format))
else:
objs = capfirst(dateformat.format(self.raw_value, date_format))
else:
objs = EMPTY_VALUE
elif isinstance(self.field, models.BooleanField) or isinstance(self.field, models.NullBooleanField):
objs = {True: 'Yes', False: 'No', None: 'Unknown'}[self.raw_value]
else:
objs = self.raw_value
return [objs]
def urls(self):
"Returns a list of (value, URL) tuples."
# First, check the urls() method for each plugin.
plugin_urls = []
for plugin_name, plugin in self.model.model_databrowse().plugins.items():
urls = plugin.urls(plugin_name, self)
if urls is not None:
#plugin_urls.append(urls)
values = self.values()
return zip(self.values(), urls)
if self.field.rel:
m = EasyModel(self.model.site, self.field.rel.to)
if self.field.rel.to in self.model.model_list:
lst = []
for value in self.values():
url = '%s%s/%s/objects/%s/' % (self.model.site.root_url, m.model._meta.app_label, m.model._meta.module_name, value._get_pk_val())
lst.append((str(value), url))
else:
lst = [(value, None) for value in self.values()]
elif self.field.choices:
lst = []
for value in self.values():
url = '%s%s/%s/fields/%s/%s/' % (self.model.site.root_url, self.model.model._meta.app_label, self.model.model._meta.module_name, self.field.name, self.raw_value)
lst.append((value, url))
elif isinstance(self.field, models.URLField):
val = self.values()[0]
lst = [(val, val)]
else:
lst = [(self.values()[0], None)]
return lst

View File

@ -0,0 +1,84 @@
from django import http
from django.db import models
from django.contrib.databrowse.datastructures import EasyModel
from django.contrib.databrowse.sites import DatabrowsePlugin
from django.shortcuts import render_to_response
from django.utils.text import capfirst
from django.utils.translation import get_date_formats
from django.views.generic import date_based
import datetime
import time
class CalendarPlugin(DatabrowsePlugin):
def __init__(self, field_names=None):
self.field_names = field_names
def field_dict(self, model):
"""
Helper function that returns a dictionary of all DateFields or
DateTimeFields in the given model. If self.field_names is set, it takes
take that into account when building the dictionary.
"""
if self.field_names is None:
return dict([(f.name, f) for f in model._meta.fields if isinstance(f, models.DateField)])
else:
return dict([(f.name, f) for f in model._meta.fields if isinstance(f, models.DateField) and f.name in self.field_names])
def model_index_html(self, request, model, site):
fields = self.field_dict(model)
if not fields:
return ''
return '<p class="filter"><strong>View calendar by:</strong> %s</p>' % \
', '.join(['<a href="calendars/%s/">%s</a>' % (f.name, capfirst(f.verbose_name)) for f in fields.values()])
def urls(self, plugin_name, easy_instance_field):
if isinstance(easy_instance_field.field, models.DateField):
return ['%s%s/%s/%s/%s/%s/' % (easy_instance_field.model.url(),
plugin_name, easy_instance_field.field.name,
easy_instance_field.raw_value.year,
easy_instance_field.raw_value.strftime('%b').lower(),
easy_instance_field.raw_value.day)]
def model_view(self, request, model_databrowse, url):
self.model, self.site = model_databrowse.model, model_databrowse.site
self.fields = self.field_dict(self.model)
# If the model has no DateFields, there's no point in going further.
if not self.fields:
raise http.Http404('The requested model has no calendars.')
if url is None:
return self.homepage_view(request)
url_bits = url.split('/')
if self.fields.has_key(url_bits[0]):
return self.calendar_view(request, self.fields[url_bits[0]], *url_bits[1:])
raise http.Http404('The requested page does not exist.')
def homepage_view(self, request):
easy_model = EasyModel(self.site, self.model)
field_list = self.fields.values()
field_list.sort(lambda x, y: cmp(x.verbose_name, y.verbose_name))
return render_to_response('databrowse/calendar_homepage.html', {'root_url': self.site.root_url, 'model': easy_model, 'field_list': field_list})
def calendar_view(self, request, field, year=None, month=None, day=None):
easy_model = EasyModel(self.site, self.model)
extra_context = {'root_url': self.site.root_url, 'model': easy_model, 'field': field}
if day is not None:
# TODO: The objects in this template should be EasyInstances
return date_based.archive_day(request, year, month, day, self.model.objects.all(), field.name,
template_name='databrowse/calendar_day.html', allow_empty=False, allow_future=True,
extra_context=extra_context)
elif month is not None:
return date_based.archive_month(request, year, month, self.model.objects.all(), field.name,
template_name='databrowse/calendar_month.html', allow_empty=False, allow_future=True,
extra_context=extra_context)
elif year is not None:
return date_based.archive_year(request, year, self.model.objects.all(), field.name,
template_name='databrowse/calendar_year.html', allow_empty=False, allow_future=True,
extra_context=extra_context)
else:
return date_based.archive_index(request, self.model.objects.all(), field.name,
template_name='databrowse/calendar_main.html', allow_empty=True, allow_future=True,
extra_context=extra_context)
assert False, ('%s, %s, %s, %s' % (field, year, month, day))

Some files were not shown because too many files have changed in this diff Show More